UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de...

168
JUCIMAR DE ALMEIDA MENDES UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ORIENTADA A ASPECTOS MARINGÁ 2007

Transcript of UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de...

Page 1: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

JUCIMAR DE ALMEIDA MENDES

UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ORIENTADA A ASPECTOS

MARINGÁ

2007

Page 2: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

JUCIMAR DE ALMEIDA MENDES

UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ORIENTADA A ASPECTOS

Dissertação apresentada ao Programa de Pós-Graduação em Ciência da Computação da Universidade Estadual de Maringá, como requisito parcial para obtenção do grau de Mestre em Ciência da Computação. Orientadora: Profa. Dra. Elisa Hatsue Moriya

Huzita

MARINGÁ

2007

Page 3: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

Dados Internacionais de Catalogação-na-Publicação (CIP) (Biblioteca Central - UEM, Maringá – PR., Brasil)

Mendes, Jucimar de Almeida

M538c Um conjunto de características desejáveis em uma ADL

orientada a aspectos / Jucimar de Almeida. -- Maringá :

[s.n.], 2007.

167 p. : il. , figs., tabs.

Orientadora : Prof. Dr. Elisa Hatsue Moriya Huzita.

Dissertação (mestrado) - Universidade Estadual de

Maringá. Programa de Pós-graduação em Ciência da

Computação, 2007.

1. Arquitetura de software. 2. Linguagem de descrição de

arquitetura. 3. Sistemas distribuídos. 4. Desenvolvimento

de software orientado a aspectos. 5. ADL-OA. I.

Universidade Estadual de Maringá. Programa de Pós-graduação

em Ciência da Computação.

CDD 21.ed. 005.12028

Page 4: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

JUCIMAR DE ALMEIDA MENDES

UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ORIENTADA A ASPECTOS

Dissertação apresentada ao Programa de Pós-Graduação em Ciência da Computação da Universidade Estadual de Maringá, como requisito parcial para obtenção do grau de Mestre em Ciência da Computação.

Aprovado em 11/12/2007.

BANCA EXAMINADORA

Profa. Dra. Elisa Hatsue Moriya Huzita Universidade Estadual de Maringá – DIN/UEM

Profa. Dra. Maria Madalena Dias Universidade Estadual de Maringá – DIN/UEM

Prof. Dr. Marcelo Morandini Universidade de São Paulo – USP-Leste

Page 5: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

DEDICATÓRIA

Aos meus amados pais,

Maria Carmem de Almeida Mendes e Osmar Mendes,

os quais com muito carinho, sempre perseveraram em ensinar-me na senda de luz,

preocupando-se em cingir-me com amor, fé e esperança.

Page 6: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

AGRADECIMENTOS

Ao Eterno Criador, pelo rico dom da vida eterna a mim concedido e pelo Seu infinito amor

demonstrado para com a minha alma.

Aos meus amados pais, Maria Carmem e Osmar, que nunca mediram esforços para

propiciar condições a fim de que eu pudesse, com dignidade e honradez, galgar degraus nesta

vida sem me esquecer dos Degraus que conduzem à Vida Eterna.

À minha amada esposa Gilsimara Honório Antonelli Mendes, cuja ternura e doce

companhia muito me alentou durante esta árdua jornada, proporcionado o conforto necessário

nos momentos difíceis.

À minha brilhante orientadora, professora Elisa Hatsue Moriya Huzita, por sua sabedoria,

compreensão e paciência ao apontar-me o norte durante minha busca pelo conhecimento.

Aos inesquecíveis amigos participantes do Projeto DiSEN, com quem temos compartilhado

muitas idéias, vitais para a realização deste trabalho.

A todos os ilustres professores que passaram pela minha vida, desde os que se dedicaram a

me ensinar as primeiras letras até os que ministraram magníficas aulas durante esse curso de

mestrado.

Ao CNPQ (Conselho Nacional de Desenvolvimento Científico e Tecnológico) pelo apoio

financeiro concedido à pesquisa.

Page 7: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

“Ainda que eu falasse as línguas dos homens e dos anjos,

e não tivesse amor,

seria como o metal que soa ou como o sino que tine.

E ainda que tivesse o dom de profecia, e conhecesse todos os mistérios e toda a ciência,

e ainda que tivesse toda a fé de maneira tal que transportasse os montes,

e não tivesse amor, nada seria.

E ainda que distribuísse toda a minha fortuna para sustento dos pobres,

e ainda que entregasse meu corpo para ser queimado,

e não tivesse amor, nada disso me aproveitaria.”

I Epístola do Apóstolo São Paulo aos Coríntios, Cap. 13, versos 1-3

BÍBLIA SAGRADA

Page 8: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

RESUMO

Os desenvolvedores de sistemas de software distribuídos têm se deparado com diferentes

propriedades, tais como compartilhamento de recursos, abertura, transparência, estado

compartilhado, concorrência, independência de escala, tolerância a falhas e segurança. Muitos

dos interesses inerentes aos sistemas distribuídos não podem ser modularizados e compostos

apenas com o apoio das abstrações e mecanismos oferecidos pelo paradigma orientado a

objetos. À medida que a complexidade de um sistema de software é incrementada, os

interesses tendem a se espalhar por vários componentes, no nível arquitetural, de design e de

implementação. Isto conduz a uma separação de interesses ineficiente e ineficaz e,

conseqüentemente, dificulta o desenvolvimento, a manutenção e o reuso do software.

No âmbito do Desenvolvimento de Software Orientado a Aspectos, aspecto é a abstração

usada para modularizar interesses que entrecortam diversos componentes do software do

sistema.

Este trabalho apresenta uma coleção de diretrizes que norteiam o design de uma Linguagem

de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes é

proposto um conjunto de características desejáveis para uma ADL-OA.

Fundamentado no conjunto de características elaboradas, este trabalho culmina com uma

proposta de notação gráfica para uma ADL-OA. Foi realizado um experimento sobre a

arquitetura de um ambiente distribuído de desenvolvimento de software para mostrar os

benefícios do uso da notação proposta.

Palavras-Chave: Arquitetura de Software; Linguagem de Descrição de Arquitetura; Sistemas

Distribuídos; Desenvolvimento de Software Orientado a Aspectos.

Page 9: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

ABSTRACT

Distributed system software developers have faced with different properties, such as resource

sharing, openness, transparency, shared state, concurrency, independence of scale, fault

tolerance, and security. Concerns inherent to distributed systems can not be effectively

modularized and composed only by support of abstractions and mechanisms provide by object

oriented paradigm. As the system complexity is increased, concerns tend to be scattered and

tangled through several components, on architectural, design and implementation levels. This

leads to an inefficient and ineffective separation of concerns, which consequently make more

difficult the software development, maintaining and reuse.

In the Aspect Oriented Software Development approach, aspect is an abstraction used for

modularize concerns that crosscut several system software components.

This work presents a collection of guidelines which support the design of an Aspect Oriented

Architectural Description Language (AO-ADL). Based upon those guidelines, this work

proposes a set of eligible characteristics for an AO-ADL.

Based on the set of characteristics previously elaborated, this work culminates with an AO-

ADL graphical notation proposal. Experimentation about an architecture of a distributed

software development environment was accomplished to shows the benefits by using the

proposed notation.

Key-Words: Software Architecture; Architecture Description Language; Distributed

Systems; Aspect Oriented Software Development.

Page 10: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

LISTA DE FIGURAS

Nro Título Pág.

1.1 Metodologia empregada na elaboração das características desejáveis .............. 18

2.1 Host em um Sistema Distribuído ....................................................................... 22

2.2 Middleware em um Sistema Distribuído ........................................................... 22

2.3 Visão de funcionamento de um Sistema Distribuído ....................................... 23

2.4 Sistema Distribuído organizado como Middleware .......................................... 24

2.5 Estrutura Genérica de um Sistema Distribuído como um Middleware ............. 25

2.6 Dimensões de Transparências ........................................................................... 29

2.7 Mecanismos de Comunicação via APIs em Sistemas Distribuídos .................. 31

2.8 Aplicações Orientadas a Eventos Estruturadas em Camadas ............................ 32

5.1 Fases do desenvolvimento apoiadas na AOGA ................................................. 70

5.2 Aspectos arquiteturais em interfaces transversais ............................................. 70

5.3 As atividades para o ASAAM ........................................................................... 72

5.4-a Especificação convencional de uma arquitetura de software ........................... 75

5.4-b Especificação separada de interesses transversais no nível arquitetural ........... 75

6.1 Engenheiros de software interagem com o processo de software por meio de SAESs 86

6.2-a Usuário final utiliza a máquina por meio de uma solução de software ............. 87

6.2-b Engenheiro de software emprega uma SAES para se beneficiar da máquina ... 87

6.3-a Notação como interface entre o ser humano e a máquina ................................. 89

6.3-b Notação como interfaces entre SAESs .............................................................. 89

7.1 Arquitetura do DiSEN proposta em (PASCUTTI, 2002) .................................. 127

7.2 Arquitetura inicial do DiSEN em uma visão de módulos ................................. 130

7.3 Arquitetura do DiSEN em uma visão C&C (componente-e-conector) ............. 131

7.4 Componente Infra-estrutura modelado na forma de um middleware ................ 133

Page 11: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

7.5 Arquitetura do DiSEN em uma visão C&C em uma abordagem OA ............... 134

7.6 Componente Supervisor de Configuração Dinâmica expandido ....................... 135

7.7 Componente Supervisor de Configuração modelado como um aspecto ........... 136

Page 12: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

LISTA DE TABELAS

Nro Título Pág.

3.1 Documentação da arquitetura e os stakeholders ................................................ 41

5.1 Exemplos de aspectos e componentes ............................................................... 67

5.2 Comparação de ADLs OA ................................................................................. 80

6.1 Influência recíproca entre as diretrizes norteadores .......................................... 97

6.2 Diretrizes norteadoras atendidas pelas características desejáveis ..................... 112

6.3 Inter -relacionamento das características desejáveis em uma ADL-OA ........... 113

6.4 Comparação das ADLs-OA em relação às características propostas ................ 114

6.5 Proposta de uma notação gráfica para uma ADL-OA ....................................... 118

6.6 Formalismos empregados pelas principais ADLs para o domínio de SDs ........ 121

6.7 Algumas capacidades de modelagem encontradas nos formalismos estudados 121

6.8 Mapeamento dos elementos da notação visual proposta frente às características

elencadas

122

LISTA DE QUADROS

Nro Título Pág.

4.1 Framework de classificação e comparação de ADLs ............................................ 57

5.1 Regras heurísticas para avaliação de cenários ....................................................... 73

Page 13: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

LISTA DE ABREVIATURAS

ADL Architectural Description Language (Linguagem de Descrição de Arquitetura)

ADL-OA Linguagem de Descrição de Arquitetura Orientada a Aspectos

ADS Ambiente de Desenvolvimento de Software

ADDS Ambiente Distribuído de Desenvolvimento de Software

API Application Programming Interface; Application Programmer Interface

ASAAM Aspectual Software Architecture Analysis Method

CASE Computer-Aided Software Engineering

CBSE Component-Based Software Engineering

CORBA Commom Object Request Broker Architecture

COTS Commercial Off-The-Shelf

CSP Communicating Sequential Processes

DiSEN Distributed Software Engineering Environment

DSOA Desenvolvimento de Software Orientado a Aspectos

GUI Graphical User Interface

LAN Local Area Network

LP Linguagem de Programação

MIL Module Interconnecting Language

OA Orientado a Aspectos

OO Orientado a Objetos

POA Programação Orientada a Aspectos

RMI Remote Method Invocation

RUP Rational Unified Process

SAES Solução de Apoio à Engenharia de Software

SD Sistema Distribuído

SO Sistema Operacional

SoC Separation of Concerns

TCP Transfer Control Protocol

UML Unified Modeling Language

XML Extensible Markup Language

WAN Wide Area Network

Page 14: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

xiii

SUMÁRIO 1 – Introdução ........................................................................................................................... 15

1.1 Motivação ....................................................................................................................... 15 1.2 Objetivos ......................................................................................................................... 18 1.3 Metodologia da Pesquisa ................................................................................................ 18 1.4 Estrutura da Dissertação ................................................................................................. 19

2 – Sistemas Distribuídos ......................................................................................................... 21 2.1 Introdução ....................................................................................................................... 21 2.2 Conceito .......................................................................................................................... 21 2.3 Requisitos de Sistemas Distribuídos .............................................................................. 26 2.4 Desafios Encontrados no Design de Sistemas Distribuídos ........................................... 30

2.4.1 Desafio: Acesso e Configuração de Serviços .......................................................... 30 2.4.2 Desafio: Tratamento de Falhas ................................................................................ 31 2.4.3 Desafio: Concorrência ............................................................................................. 32 2.4.4 Desafio: Sincronização ............................................................................................ 33 2.4.5 Desafios genéricos ................................................................................................... 33

2.5 Considerações ................................................................................................................. 34 3 – Arquitetura de Software...................................................................................................... 35

3.1 Introdução ....................................................................................................................... 35 3.2 Conceito .......................................................................................................................... 36

3.2.1 Arquitetura versus Design ....................................................................................... 37 3.2.2 Especificação, Representação, Descrição ou Documentação? ................................ 38 3.2.3 Interfaces ................................................................................................................. 38 3.2.4 Módulos versus Componentes ................................................................................. 38

3.3 Usos da Documentação Arquitetural .............................................................................. 40 3.4 Visões Arquiteturais ....................................................................................................... 43

3.4.1 Conceito de Visão Arquitetural ............................................................................... 45 3.4.2 Tipos de Visões e Estilos Arquiteturais ................................................................... 45 3.4.3 Tipo de Visão Módulos ........................................................................................... 47 3.4.4 Tipo de Visão Componente-e-Conector (C&C) ...................................................... 48 3.4.5 Tipo de Visão Alocação .......................................................................................... 50

3.5 Considerações ................................................................................................................. 50 4 – Linguagens de Descrição de Arquiteturas .......................................................................... 53

4.1 Introdução ....................................................................................................................... 53 4.2 Principais ADLs ............................................................................................................. 54 4.3 Conceito .......................................................................................................................... 54 4.4 Características de ADLs ................................................................................................. 55 4.5 Um Framework Conceitual para ADLs .......................................................................... 56

4.5.1 Modelagem dos Componentes................................................................................. 58 4.5.2 Modelagem dos Conectores..................................................................................... 59 4.5.3 Modelagem das Configurações Arquiteturais ......................................................... 60 4.5.4 Ferramentas de Suporte para Descrição Arquitetural .............................................. 62

4.6 Considerações ................................................................................................................. 63 5 – Desenvolvimento de Software Orientado a Aspectos ........................................................ 65

5.1 Introdução ....................................................................................................................... 65 5.2 Programação Orientada a Aspectos ................................................................................ 65 5.3 Abordagens de Arquitetura de Software Orientada a Aspectos ..................................... 68

5.3.1 Abordagens para Modelagem Arquitetural ............................................................. 68

Page 15: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

xiv

5.3.2 Abordagens para o Processo de Design Arquitetural .............................................. 69 5.3.3 Abordagens para Avaliação Arquitetural ................................................................ 71

5.4 Uma Análise de Abordagens de Aspectos Preliminares ................................................ 73 5.5 ADLs Orientadas a Aspectos ......................................................................................... 74

5.5.1 A Abordagem de Navasa et al. (2002) .................................................................... 74 5.5.2 DAOP-ADL ............................................................................................................ 75 5.5.3 Fractal...................................................................................................................... 76 5.5.4 PRISMA .................................................................................................................. 76 5.5.5 AspectualACME ..................................................................................................... 76 5.5.6 Questões sobre Aspectos e Conexão Arquitetural .................................................. 76 5.5.7 Observações ............................................................................................................ 79

5.6 Considerações ................................................................................................................ 81 6 – Características Desejáveis em uma ADL-OA .................................................................... 83

6.1 Introdução ...................................................................................................................... 83 6.2 Diretrizes Norteadoras ................................................................................................... 84 6.3 Interdependência das Diretrizes ..................................................................................... 97 6.4 Desiderata: características desejáveis em uma ADL-OA .............................................. 97

6.4.1 – Características Relacionadas à Notação de Design Arquitetural ......................... 99 6.4.2 – Características Relacionadas ao Método de Design Arquitetural ...................... 105 6.4.3 – Características Relacionadas às Ferramentas de Apoio ..................................... 109

6.5 Relações entre Diretrizes e Características .................................................................. 111 6.6 Proposta de Notação Visual e Formalismo para uma ADL-OA .................................. 115

6.6.1 Notação Gráfica .................................................................................................... 117 6.6.2 Formalismo Subjacente ......................................................................................... 120

6.7 Considerações .............................................................................................................. 121 7 – Modelagem Arquitetural do DiSEN: Um exemplo de utilização de uma ADL-OA ........ 123

7.1 Introdução .................................................................................................................... 123 7.2 O DiSEN: Visão Geral ................................................................................................. 123 7.3 Requisitos Relevantes para um ADDS ........................................................................ 124 7.4 Abordagem Arquitetural .............................................................................................. 126 7.5 Representação Arquitetural do DiSEN ........................................................................ 128

7.5.1 Uma Abordagem Arquitetural Convencional (não-OA) ....................................... 128 7.5.2 Uma Abordagem Arquitetural Orientada a Aspectos ........................................... 131

7.6 Considerações .............................................................................................................. 136 8 – Conclusões e Trabalhos Futuros ...................................................................................... 137

8.1 Conclusões ................................................................................................................... 137 8.2 Trabalhos futuros ......................................................................................................... 139

Referências ............................................................................................................................. 141 Anexo 1 – Resultados da Comparação de ADLs de (MEDVIDOVIC; TAYLOR, 2000) .... 151 Anexo 2 – Resultados do survey de (CLEMENTS, 1996) .................................................... 157 Anexo 3 – Caracterização de Abordagens de Aspectos Preliminares ................................... 161

Page 16: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

15

1 – Introdução

1.1 Motivação

As aplicações utilizadas atualmente requerem um alto grau de interação entre os

computadores e as pessoas, principalmente em virtude das atividades inerentemente

colaborativas.

Apesar de as aplicações distribuídas oferecerem muitos benefícios potenciais, elas são

mais difíceis de serem projetadas, implementadas, otimizadas, e gerenciadas em comparação

com as aplicações centralizadas. Teoricamente, o desenvolvimento de aplicações distribuídas

(que usam serviços concorrentes e em rede) pode melhorar o desempenho, a confiabilidade, a

escalabilidade, e a efetividade do custo do sistema. Na prática, entretanto, é difícil o

desenvolvimento de aplicações distribuídas eficientes, robustas, extensíveis, e com a

requerida disponibilidade, devido a diferenças chaves entre as arquiteturas de aplicações

centralizadas (stand-alone) e as arquiteturas de aplicações em rede (SCHMIDT et al., 2000)

(COULOURIS; DOLLIMORE; KINDBERG, 2007) (TANENBAUM; STEEN, 2002).

O crescimento dos sistemas de software, em termos de tamanho e complexidade, faz

com que o problema de desenvolvimento extrapole o design das estruturas de dados e

algoritmos para o sistema. Ou seja, projetar a estrutura global de um sistema emerge como um

problema novo, qual seja, o desenvolvimento de software orientado para arquitetura.

Os sistemas distribuídos têm se multiplicado, principalmente em função do advento da

Web, e o desenvolvimento de tais sistemas é significativamente mais complexo, provocando

uma crescente necessidade de Linguagens de Descrição Arquitetural (ADLs – Architectural

Description Languages) para modelar as arquiteturas de software de tais sistemas.

Os métodos tradicionais de design arquitetural não fazem distinção explícita entre os

interesses arquiteturais convencionais e interesses arquiteturais que entrecortam múltiplos

componentes arquiteturais. Conseqüentemente, há um risco de que potenciais aspectos

possam ser facilmente negligenciados durante o design arquitetural e continuem não

solucionados em nível de design e programação.

Os sistemas de software atuais demandam que o foco do desenvolvimento migre de

uma visão puramente funcional, para uma que lide também com propriedades não funcionais.

Com a inclusão dessas propriedades não funcionais no desenvolvimento do software, as

preocupações do desenvolvedor alteram-se. Ele deixa de concentrar-se, exclusivamente, nas

características intrínsecas da aplicação para preocupar-se com as propriedades não funcionais

Page 17: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

16

que o sistema deve satisfazer. Alguns exemplos de características não funcionais encontrados

freqüentemente na literatura compreendem (BOEHM; IN, 1996): tratamento de falhas,

persistência, comunicação, replicação, coordenação, gerenciamento de memória, restrições de

tempo-real e muitas outras questões relacionadas ao comportamento do sistema.

Incorporar requisitos não funcionais em qualquer tipo de software é uma das

atividades mais complexas. Além disso, esses requisitos dificultam o processo de

desenvolvimento, visto que podem gerar diversos problemas, tais como falta de transparência,

código não funcional disperso e/ou entrelaçado em vários componentes e, em decorrência,

prejudicam a reutilização e a manutenção desses componentes. Percebe-se que esses

problemas são oriundos da relação intrínseca que existe entre a funcionalidade e as

características não comportamentais.

A Programação Orientada a Aspectos (POA) (KICZALES et al., 1997) oferece apoio

para implementar de forma modular interesses espalhados por várias classes, tais como

segurança, sincronização e persistência. Apesar de que os aspectos foram, originalmente,

definidos apenas em nível de programação (KICZALES et al., 1997), o Desenvolvimento de

Software Orientado a Aspectos (DSOA) tenta cobrir todas as fases do ciclo de vida de

desenvolvimento de software, desde os requisitos à implementação (BAKKER;

TEKINERDOGAN; AKSIT, 2005). Portanto, é necessário definir notações e linguagens que

auxiliem os desenvolvedores de software a especificar e validar arquiteturas de software

baseadas em componentes e aspectos.

Semelhantemente à noção de aspecto em nível de programação, os interesses

transversais arquiteturais denotam os chamados aspectos arquiteturais. Uma vez que a

propriedade transversal dos aspectos arquiteturais é inerente, ela não pode simplesmente ser

desfeita por meio da redefinição da arquitetura de software usando-se abstrações arquiteturais

convencionais. Da mesma forma que para as várias abstrações de programação orientada a

aspectos, é necessário explicitar novos mecanismos para identificar, especificar e avaliar

aspectos no nível de design arquitetural. Neste sentido, as abordagens de design arquitetural

orientadas a aspectos descrevem passos para a identificação de aspectos arquiteturais e seus

componentes entrelaçados. Esta informação é usada para re-projetar a arquitetura na qual os

aspectos arquiteturais são explicitados (CHITCHYAN et al., 2005).

A emergência da Engenharia de Software Baseada em Componentes (CBSE)

(SZYPERSKI, 1998) impõe uma nova forma de desenvolvimento de aplicações por meio da

Page 18: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

17

conexão em componentes de software stand-alone, ao invés de desenvolvê-las a partir do

zero.

Comumente, pode ocorrer de um mesmo interesse estar espalhado em diferentes

componentes, criando dependências indesejáveis entre eles. Estas dependências tornam difícil

a decomposição funcional de um sistema em componentes autônomos. Deste modo, a

separação avançada de interesses é amplamente aceita como a abordagem mais adequada para

solucionar este problema, estendendo a CBSE com novas dimensões de interesses, a qual vai

além dos “objetos” ou “componentes”.

O DSOA baseia-se no princípio de separação de interesses, e introduz uma nova

abstração (dimensão), denominada aspecto, que modela esses interesses que apresentam-se

nos múltiplos componentes em um sistema que pode se modificar ou evoluir

independentemente, resultando em sistemas menos acoplados. Conseqüentemente, as técnicas

proporcionadas pela DSOA podem ser aplicadas com sucesso no contexto da CBSE,

aprimorando a modularidade e, em conseqüência, a reusabilidade e evolução das aplicações.

Não obstante muitas das dificuldades enfrentadas pelos desenvolvedores possam ser

atenuadas por meio de técnicas e métodos consolidados de engenharia de software, a

crescente complexidade no desenvolvimento de software (decorrente principalmente de

características tais como concorrência, distribuição, heterogeneidade, dinamismo, e

mobilidade) requer novas tecnologias que venham apoiar o desenvolvedor. No contexto do

desenvolvimento de software orientado a arquitetura, as ADLs convencionais não apresentam

as abstrações necessárias para que os interesses arquiteturais transversais possam ser

modularizados. Neste sentido, este presente trabalho se preocupa em investigar quais são as

características essenciais que uma ADL Orientada a Aspecto deve apresentar para que o

arquiteto de software possa modelar, com eficácia, os interesses arquiteturais transversais.

As ADLs lidam com a descrição, análise e o reuso de arquiteturas de software

(MEDVIDOVIC; TAYLOR, 2000). As ADLs descrevem a estrutura do sistema, a qual

compreende os componentes de software, as propriedades externamente visíveis desses

componentes, e os relacionamentos entre eles. Qualquer adaptação de ADLs existentes, ou a

engenharia de novas ADLs, deve estar baseada em uma clara compreensão dos novos desafios

que os aspectos impõem em nível arquitetural, mas que não podem ser manipulados com as

abstrações de ADL existentes. Quando do design de uma ADL-OA, algumas questões

surgem, e tais questões devem ser respondidas a fim de embasar o design dessa nova ADL.

Page 19: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

18

1.2 Objetivos

O objetivo geral deste trabalho consiste em definir um conjunto de características (ou

propriedades) desejáveis em uma ADL-OA.

Como objetivos específicos, tem-se:

• Elaborar uma lista de diretrizes norteadoras para a definição de um conjunto de

características (ou propriedades) desejáveis em uma ADL-OA.

• Propor uma notação gráfica para uma ADL-OA.

• Realizar um experimento representando a arquitetura do DiSEN com base na notação

gráfica proposta.

1.3 Metodologia da Pesquisa

Conforme ilustra a Figura 1.1, com base nas investigações realizadas em tópicos como

Sistemas Distribuídos, Arquitetura de Software, ADLs convencionais, ADLs-OA disponíveis,

e DSOA, é levantada uma coleção de características consideradas essenciais a uma ADL-OA.

Figura 1.1 – Metodologia empregada na elaboração deste trabalho

Com base nos estudos realizados, foi definida uma série de “diretrizes norteadoras ao

estabelecimento das características essenciais a uma ADL-OA” (Seção 6.2). Tais diretrizes,

derivadas a partir da literatura na área de engenharia de software, são enunciadas visando

embasar um elenco de “características desejáveis em uma ADL-OA” – de modo que tal ADL

seja capaz de apoiar sistemática e solidamente o desenvolvimento de sistemas de software

orientado à arquitetura1. Essa coleção de características compreende as propriedades

(capacidades e recursos de modelagem) que uma ADL-AO deve apresentar, adicionalmente

1 É válido ressaltar que importantes metodologias de desenvolvimento de software são orientadas à arquitetura (ex.: RUP).

Conceitos de Sistemas

Distribuídos

Framework de ADLs

Conceitos de DSOA

Diretrizes norteadoras

Características Desejáveis

Proposta de Notação Gráfica

Conceitos de Arquitetura de

Software

ADLs-OA disponíveis

Experimento envolvendo o

DiSEN

Page 20: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

19

àquelas enunciadas no framework de ADLs proposto por Medvidovic e Taylor (2000), de

modo que seja possível modelar eficazmente os interesses arquiteturais transversais e suas

interações com os demais elementos da arquitetura do sistema de software.

Uma proposta de notação gráfica para uma ADL-OA é apresentada neste trabalho. Por

fim, foi realizado um experimento envolvendo o DiSEN (Distributed Software Engineering

Environment), e o resultado alcançado encontra-se descrito neste trabalho. Neste sentido, a

arquitetura do DiSEN foi modelada com base na notação gráfica proposta, com o objetivo de

realizar experimento e constatar os benefícios oferecidos por uma ADL-OA que apresenta as

características elencadas.

Evidencia-se, pelo esquema apresentado na Figura 1.1, que a metodologia empregada

neste trabalho distingue-se daquelas utilizadas em trabalhos relacionados, tais como

(NAVASA et al., 2005), (PINTO; FUENTES; TROYA, 2003), (PEREZ et al., 2003),

(PESSEMIER; SEINTURIER; DUCHIEN, 2004), (BATISTA et al., 2006-a). Neste presente

trabalho, realizou-se uma abordagem top-down, partindo dos princípios fundamentais da

engenharia de software até chegar aos conceitos básicos do DSOA, provenientes da POA.

Diferentemente, os trabalhos supracitados partem dos conceitos da POA para alcançar o nível

de arquitetura de software, em uma abordagem claramente botton-up.

A abordagem top-down deu condições para que a proposta de uma ADL-OA fosse

fundamentalmente respaldada em sólidos princípios de engenharia de software, em particular

os da área de arquitetura de software, sem abrir mão das necessidades que o paradigma

orientado a aspectos impõe.

1.4 Estrutura da Dissertação

No Capítulo 2 é abordado o tópico de Sistemas Distribuídos: apresenta os principais

conceitos relacionados; cita e explica, separadamente, cada um dos requisitos de sistemas

distribuídos; e expõe os principais desafios encontrados no design de tais sistemas.

No Capítulo 3 é coberta a disciplina de Arquitetura de Software: os principais

conceitos associados; as principais finalidades de uma documentação arquitetural; e um

conteúdo abrangente sobre visões arquiteturais.

No Capítulo 4 é enfocado, especificamente, as Linguagens de Descrição de

Arquiteturas (ADLs): introduz-se conceitos relevantes acerca de ADLs; são descritas as

características de ADLs apresentadas pelos principais pesquisadores da área; apresenta-se o

clássico framework conceitual sobre ADLs proposto por Medvidovic e Taylor (2000); e é

Page 21: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

20

mostrada a metodologia e a estrutura de um importante survey sobre ADLs realizado por

Clements (1996).

No Capítulo 5 é apresentada a emergente disciplina denominada Desenvolvimento de

Software Orientado a Aspectos (DSOA): faz-se uma breve introdução sobre a Programação

Orientada a Aspectos (POA); são apresentas as principais abordagens arquiteturais orientadas

a aspectos; é exposta uma análise das principais abordagens de aspectos preliminares; e são

descritas as principais ADLs Orientadas a Aspectos encontradas na literatura.

O Capítulo 6 desenvolve-se apresentando um conjunto de diretrizes norteadoras ao

estabelecimento das características essenciais a uma ADL-OA. Tais diretrizes são enunciadas

visando embasar a lista de características desejáveis em uma ADL-OA para o domínio de

sistemas distribuídos. É apresentada uma tabela sintetizando uma comparação das ADLs-OA

disponíveis em relação ao elenco das características consideradas essenciais. Por fim,

apresenta-se uma proposta de notação gráfica para uma ADL-OA; também é apontada uma

notação matemática com prováveis condições de servir como base ao formalismo subjacente

adequado para a modelagem estrutural e comportamental de arquiteturas de sistemas de

software distribuídos.

No Capítulo 7 são mostrados os resultados de um Experimento realizado com base no

DiSEN (Distributed Software Engineering Environment), um Ambiente Distribuído de

Desenvolvimento de Software (ADDS). A arquitetura do DiSEN é apresentada a partir de

uma abordagem convencional (não orientada a aspectos) e, na seqüência, a arquitetura do

mesmo sistema é representada com base nos conceitos do DSOA, utilizando a notação gráfica

de uma ADL-OA proposta no Capítulo 6.

As Conclusões e os Trabalhos Futuros estão contidos no Capítulo 8.

Page 22: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

21

2 – Sistemas Distribuídos

2.1 Introdução Durante a década de 1990, os avanços na tecnologia VLSI (Very Large Scale

Integration) e nas fibras ópticas incrementaram o poder de processamento dos computadores

em 3 ou 4 ordens de magnitude e as velocidades das conexões de rede em 6 ou 7 ordens de

magnitude (SCHMIDT, et al., 2000). Supondo que essa tendência continue, esses autores

afirmam ainda que, até 2010, serão verificadas as seguintes velocidades: clocks dos

computadores ~ 100 Gigahertz; links de redes locais ~ 100 Gigabits/segundo; links de redes

sem fio ~ 100 Megabits/segundo; links de backbone da Internet ~ 10 Terabits/segundo.

Conseqüentemente, para maximizar os benefícios dos avanços em tecnologia de

hardware, a qualidade e a produtividade de tecnologias para desenvolvimento de middlewares

e aplicações de softwares concorrentes e conectados em rede também devem aumentar.

As principais características dos sistemas distribuídos são: concorrência;

compartilhamento de recursos; abertura; transparência; estado compartilhado; independência

de escala; e tolerância a falhas (TANENBAUM; STEEN, 2002) (EMMERICH, 2001).

Segundo Schmidt et al. (2000), há três razões gerais para se adotar uma arquitetura

distribuída: colaboração e conectividade; desempenho, escalabilidade, e tolerância a falhas

melhorada; e efetividade do custo.

O restante deste capítulo encontra-se organizado como segue. Na Seção 2.2 estão

expostos os principais conceitos relacionados aos sistemas distribuídos. Na Seção 2.3 explica-

se, separadamente, cada um dos requisitos de sistemas distribuídos. Na Seção 2.4 são

apresentados os principais desafios encontrados no design de sistemas distribuídos. Algumas

considerações sobre o conteúdo deste capítulo estão expostas na Seção 2.5.

2.2 Conceito

Na literatura corrente, encontram-se várias definições sobre sistemas distribuídos, cada

qual refletindo pontos de vista particulares de seus autores, nem sempre consensuais. Em

(TANENBAUM, 2003), encontramos que:

“Em um sistema distribuído, um conjunto de computadores independentes parece ser,

para seus usuários, um sistema único e coerente. Em geral, ele tem um único modelo

ou paradigma que se apresenta aos usuários. Com freqüência, uma camada de software

sobre o sistema operacional, chamada middleware, é responsável pela implementação

desse modelo”.

Page 23: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

22

Intuitivamente, um sistema distribuído terá componentes que são distribuídos em

vários computadores. Um computador que hospeda os componentes, incluindo hardware e seu

software de sistema operacional (SO) de rede, de um sistema distribuído é referenciado como

um host (EMMERICH, 2000). A Figura 2.1 transmite esta idéia.

Componente 1 . . . Componente n

Sistema Operacional de Rede

Hardware Host

Figura 2.1 – Host em um Sistema Distribuído – Fonte: Adaptado de (EMMERICH, 2000, p. 5)

Um sistema distribuído tem mais do que um componente em mais do que um host.

Estes componentes necessitam interagir um com o outro: eles necessitam fornecer acesso aos

serviços um do outro e devem estar aptos a solicitar serviços um do outro. Teoricamente, os

componentes poderiam fazer isso diretamente por meio do uso das primitivas que os SOs de

rede fornecem. Na prática, conforme Emmerich (2000), isto seria muito complexo para muitas

aplicações. Como mostrado na Figura 2.2, os sistemas distribuídos, usualmente, empregam

alguma forma de middleware, o qual consiste em uma camada de software posicionada

logicamente entre os SOs de rede e as aplicações, e cujo objetivo principal é resolver a

heterogeneidade e a distribuição (vide Seção 2.3).

Componente 1 . . . Componente n

Middleware

Sistema Operacional de Rede

Hardware Host1

Figura 2.2 – Middleware em um Sistema Distribuído – Fonte: Adaptado de (EMMERICH, 2000, p. 5)

Em sua obra, Emmerich (2000) culmina com a seguinte conceituação, conforme está

ilustrado na Figura 2.3:

“Um sistema distribuído é uma coleção de hosts autônomos que estão conectados ao

longo de uma rede de computadores. Cada host executa componentes e opera um

middleware de distribuição, o qual possibilita aos componentes coordenarem suas

atividades de forma tal que os usuários percebam o sistema como um recurso de

computação único e integrado”.

Page 24: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

23

Figura 2.3 – Visão de funcionamento de um Sistema Distribuído – Fonte: Adaptado de (EMMERICH, 2000, p. 6)

Coulouris, Dollimore, e Kindberg (2007) definem um sistema distribuído como segue:

“Um sistema distribuído é aquele no qual os componentes de hardware ou software,

localizados em computadores interligados em rede, se comunicam e coordenam suas

ações apenas enviando mensagens entre si”.

Segundo Coulouris, Dollimore, e Kindberg (2007), os desafios advindos da construção

de sistemas distribuídos são: (a) heterogeneidade de seus componentes; (b) abertura do

sistema; (c) segurança; (d) escalabilidade; (e) tratamento de falhas; (f) concorrência de

componentes; e (g) transparência. (Vide Seção 2.3).

A interligação dos computadores em rede, distribuída de maneira útil, traz à tona as

seguintes conseqüências (COULOURIS; DOLLIMORE, KINDBERG, 2007):

• Concorrência: Em uma rede de computadores, a execução concorrente de programas é a

norma. A coordenação de programas em execução concorrente e que compartilham

recursos é um assunto importante e recorrente.

• Inexistência de relógio global: Quando os programas precisam cooperar entre si, eles

coordenam suas ações trocando mensagens, o que freqüentemente depende de uma noção

compartilhada do tempo em que as ações dos programas ocorrem. Entretanto, não existe

uma noção global única do tempo correto. Essa é uma conseqüência direta do fato de que

a comunicação se dá por meio do envio de mensagens em uma rede.

• Falhas independentes: Falhas na rede resultam no isolamento dos computadores que estão

conectados a ela, o que não significa que eles param de funcionar. Na verdade, os

Componente1 . . . Componenten

Middleware

Sistema Operacional de Rede

Hardware

Host2

Componente1 . . . Componenten

Middleware

Sistema Operacional de Rede

Hardware

Host1

Componente1 . . . Componenten

Middleware

Sistema Operacional de Rede

Hardware

Hostn

Componente1 . . . Componenten

Middleware

Sistema Operacional de Rede

Hardware

Hostn-1

Rede

Page 25: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

24

programas neles existentes talvez não consigam detectar se a rede falhou ou tornou-se

demasiadamente lenta. Analogamente, a falha de um computador ou o término inesperado

de um programa em algum lugar no sistema (um colapso no sistema) não é imediatamente

percebida pelos outros componentes, deixando os outros ainda em funcionamento.

Tanenbaum e Steen (2002) evidenciam que, para apoiar computadores heterogêneos e

redes heterogêneas e, ao mesmo tempo, oferecer uma visão uniforme do sistema, os sistemas

distribuídos normalmente são organizados por meio de uma camada de software que está

logicamente localizada entre uma camada de nível mais alto consistindo de usuários e

aplicações, e de uma camada inferior consistindo de SOs. Na perspectiva desses autores, tais

sistemas distribuídos são normalmente chamados de middleware, como mostrado na Figura

2.4 (é possível observar que a camada de middleware estende-se por múltiplas máquinas).

Figura 2.4 – Sistema Distribuído organizado como Middleware –

Fonte: Adaptado de (TANENBAUM; STEEN, 2002, p. 3)

A maioria dos autores cita como exemplos típicos de sistemas distribuídos: a Web,

uma intranet (que é uma parte de Internet gerenciada por uma organização), e a computação

móvel e ubíqua (WEISER, 1993).

Ponderando tudo o que foi posto acima, é possível afirmar que um sistema distribuído

consiste em um conjunto de computadores autônomos conectados em rede; cada computador

executa componente(s) de software e opera sobre um middleware, o qual possibilita aos

componentes coordenarem suas atividades de maneira tal que os usuários tenham a

impressão de ser um sistema único integrado.

Em termos de hardware, os sistemas distribuídos possuem pelo menos uma

característica comum: consistem de múltiplas CPUs. Porém, o hardware pode ser organizado

de diferentes formas, especialmente no tocante ao modo como eles estão interconectados e

Rede

Host 1 . . . Host 2 Host N

SO Local SO Local SO Local

Serviços do Middleware

Aplicações Distribuídas

Page 26: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

25

como se comunicam. Para os propósitos deste trabalho devem ser considerados os sistemas

construídos a partir de um conjunto de computadores independentes.

Na verdade, é a arquitetura do software que realmente determina aquilo que de fato é

um sistema distribuído. Tanenbaum e Steen (2002) sustentam que os sistemas distribuídos

agem, muitas vezes, como “gerenciadores de recursos para o hardware subjacente, tentando

ocultar suas complexidades e sua natureza heterogênea por intermédio de uma máquina

virtual sobre a qual as aplicações podem ser facilmente executadas”.

Em (TANENBAUM; STEEN, 2002) os SOs são classificados como: a) sistemas

fortemente acoplados, que tentam manter uma visão única e global dos recursos gerenciados

(SO distribuído, usado para o gerenciamento de sistemas multiprocessados e

multicomputadores homogêneos); e b) sistemas fracamente acoplados, considerados como

um conjunto de computadores, cada qual executando seu SO (SO de rede, usado para sistemas

multicomputadores heterogêneos).

Middleware

Schmidt et al. (2000) conceituam um middleware com sendo o conjunto de serviços,

protocolos, e utilitários de suporte que proporcionam a infra-estrutura que torna possível a

execução dos sistemas e aplicações distribuídas – a infra-estrutura sobre a qual se baseiam os

web services, objetos distribuídos, aplicações colaborativas, sistemas de e-commerce, e outras

plataformas importantes (Figura 2.5).

Figura 2.5 – Estrutura Genérica de um Sistema Distribuído como um

Middleware – Fonte: Adaptado de (TANENBAUM; STEEN, 2002, p. 37)

Convencionalmente, o middleware consiste do software necessário para se construir

sistemas e aplicações, ainda que não seja, contudo, uma parte intrínseca do kernel de um SO.

O middleware pode aparecer em bibliotecas e frameworks, SOs e seus adicionais, máquinas

Rede

Host 1

Kernel SO

.... Host 2 Host N

Serviços SO de Rede

Aplicações Distribuídas

Kernel SO

Serviços SO de Rede

Kernel SO

Serviços SO de Rede

Serviços do Middleware

Page 27: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

26

virtuais Java e outros sistemas em tempo de execução, componentes de software de alta

granularidade, e em partes de produtos finais tais como os próprios web services.

Um middleware incorpora idéias básicas por trás de muitos padrões de software e,

normalmente, são variações de padrões OO (orientados a objetos) mais genéricos (ex.:

proxies, adaptadores, e facades) (LEA; ALEXANDER, 1994). Os desenvolvedores de

middlewares podem resolver uma ampla faixa de forças incluindo desempenho,

confiabilidade, interoperabilidade, portabilidade e acomodação de softwares legados

(SCHMIDT et al., 2000).

Segundo Coulouris, Dollimore e Kindberg (2007), o termo middleware refere-se a

“uma camada de software que fornece uma abstração de programação, assim como o

mascaramento da heterogeneidade das redes, do hardware, de SOs e linguagens de

programação (LPs) subjacentes”. Podem ser citados como exemplos o CORBA (Common

Object Request Broker Architecture) e o Java RMI (Remote Method Invocation). Todo

middleware, em si, trata das diferenças em nível dos SOs e do hardware.

Além de resolver o problema da heterogeneidade, o middleware “fornece um modelo

computacional uniforme para ser usado pelos programadores de serviços e de aplicativos

distribuídos” e “sua implementação oculta o fato de que as mensagens passam por uma rede

para enviar o pedido de invocação e sua resposta” (COULOURIS; DOLLIMORE,

KINDBERG, 2007). Possíveis modelos incluem notificação remota de eventos, acesso remoto

a banco de dados, processamento de transações distribuídas, e invocação remota de objetos.

2.3 Requisitos de Sistemas Distribuídos

Um requisito funcional corresponde a uma declaração de alguma função ou

característica que deve ser implementada em um sistema. Diferentemente, um requisito não-

funcional refere-se a uma declaração de uma restrição ou comportamento esperado que se

aplica a um sistema – essa restrição pode corresponder às propriedades emergentes do

software sendo desenvolvido ou ao processo de desenvolvimento (SOMMERVILLE, 2007)

A necessidade de distribuir um sistema é normalmente derivada de requisitos não

funcionais. O design de um sistema distribuído tem sua complexidade incrementada devido à

presença de alguns desafios, como os listados a seguir: heterogeneidade, abertura,

escalabilidade, tratamento de falhas, concorrência e transparência (COULOURIS;

DOLLIMORE, KINDBERG, 2007) (EMMERICH, 2000) (TANENBAUM; STEEN, 2002).

Page 28: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

27

• Heterogeneidade

A heterogeneidade de componentes surge a partir do uso de tecnologias diferentes para

a implementação de serviços, para o gerenciamento de dados e para a execução de

componentes em diferentes plataformas de hardware; o conceito de heterogeneidade aplica-se

aos seguintes aspectos: redes, hardware de computador, SOs, LPs, implementações de

diferentes desenvolvedores. A menos que se utilizem padrões comuns, programas escritos por

diferentes desenvolvedores não podem se comunicar.

• Abertura do Sistema

Coulouris, Dollimore e Kindberg (2007) enfatizam que “um sistema computacional é

aberto quando ele pode ser estendido e reimplementado de várias maneiras”, e que “o fato de

um sistema distribuído ser ou não um sistema aberto é determinado, principalmente, pelo grau

com que novos serviços podem ser adicionados e disponibilizados para uso por uma variedade

de programas clientes”. Essa característica, a de sistema aberto, pode ser alcançada por meio

da publicação das interfaces (EMMERICH, 2000).

• Segurança

A segurança de recursos de informação compõe-se da seguinte tríade:

confidencialidade (proteção contra exposição a pessoas não autorizadas), integridade

(proteção contra alteração ou dano) e disponibilidade (proteção contra interferência nos meios

de acesso aos recursos). Tais desafios são solucionados com o uso de técnicas de criptografia.

Entretanto, alguns desafios ainda não foram totalmente resolvidos, a saber: ataque de negação

de serviço; e segurança de código móvel (COULOURIS; DOLLIMORE, KINDBERG, 2007).

• Escalabilidade

Segundo Emmerich (2000), a escalabilidade “denota a capacidade de acomodar uma

crescente carga no futuro”. Um sistema é considerado escalável se permanecer eficiente

mesmo quando houver um aumento significativo no número de recursos e de usuários.

O design de sistemas escaláveis apresenta desafios como: controlar o custo dos

recursos físicos, controlar a perda de desempenho, impedir que os recursos de software se

esgotem, e evitar gargalos de desempenho. Um difícil objetivo almejado é que o software de

sistema e de aplicativo não tenha que ser modificado quando a escala do sistema aumentar. As

técnicas que têm obtido sucesso na solução dos problemas de escalabilidade incluem: dados

replicados, a técnica associada com o uso de cache, e a distribuição de vários servidores para

manipular as tarefas comumente executadas, permitindo que várias tarefas semelhantes sejam

executadas concorrentemente (COULOURIS; DOLLIMORE, KINDBERG, 2007).

Page 29: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

28

• Tratamento de falhas

Quando um dos componentes de um sistema distribuído falha, apenas o trabalho que

estava usando o componente defeituoso é afetado. Conforme (EMMERICH, 2000), “uma

operação que continua mesmo na presença de falhas é dita como tolerante à falha”. Em um

sistema distribuído alguns componentes falham enquanto outros continuam funcionando

(falhas parciais), o que torna o tratamento de falhas uma atividade particularmente difícil.

As principais técnicas para tratamento de falhas encontradas na literatura são: detecção

de falhas; mascaramento de falhas; tolerância a falhas; recuperação de falhas; e redundância.

Os sistemas distribuídos tendem a ter alto grau de disponibilidade perante falhas de hardware.

• Concorrência

Existe a possibilidade de que vários clientes tentem acessar um recurso compartilhado

(hardware, software, dados) ao mesmo tempo. A estratégia de fazer com que o processo que

gerencia um recurso compartilhado aceite e trate um pedido de cliente por vez limita o

desempenho do tratamento de pedidos. Conseqüentemente, os serviços e aplicativos

geralmente permitem que vários pedidos de cliente sejam processados concorrentemente.

Assim, qualquer objeto que represente um recurso compartilhado em um sistema

distribuído deve ser responsável por garantir que ele opere corretamente em um ambiente no

qual a concorrência se faz presente. Isso se aplica não apenas aos servidores, mas também aos

objetos nos aplicativos (COULOURIS; DOLLIMORE, KINDBERG, 2007). As operações de

um objeto devem ser sincronizadas de tal maneira que seus dados permaneçam consistentes, o

que pode ser obtido por técnicas padrão (ex.: semáforos), disponíveis na maioria dos SOs.

• Transparência

O fato de o sistema ser composto de múltiplos componentes deve estar oculto aos

usuários. Conforme (EMMERICH, 2000), “determinado aspecto de distribuição é dito

transparente se ele não for visível aos usuários, aos programadores ou aos administradores”.

Coulouris, Dollimore e Kindberg (2007) definem a transparência como sendo “a

ocultação, para um usuário final ou para um programador de aplicativos, da separação dos

componentes em um sistema distribuído de modo que o sistema seja percebido como um todo,

em vez de uma coleção de componentes independentes”.

As diversas dimensões de transparências foram inicialmente identificadas no ANSA2

Reference Manual (ANSA, 1989 apud COULOURIS; DOLLIMORE, KINDBERG, 2007) e

fazem parte do Padrão Internacional sobre Processamento Distribuído Aberto (International

2 Advanced Network Systems Architecture

Page 30: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

29

Standard on Open Distributed Processing – ODP) (ISO/IEC, 1996 apud EMMERICH, 2000).

A Figura 2.6 sugere que há diferentes níveis de transparência. Os critérios de transparência de

níveis inferiores dão suporte ao alcance de critérios nos níveis superiores.

Figura 2.6 – Dimensões de Transparências – Fonte: Adaptado de (EMMERICH, 2000, p. 19)

As formas de transparência do ANSA Reference Manual estão parafraseadas a seguir:

• Transparência de acesso: recursos locais e remotos acessados com o uso de operações

distribuídas; as interfaces para a comunicação local e a remota são as mesmas.

• Transparência de localização: recursos acessados sem o conhecimento de sua localização

física ou na rede.

• Transparência de concorrência: vários processos operando concorrentemente, usando

recursos compartilhados sem interferência entre eles.

• Transparência de replicação: várias instâncias dos recursos são usadas para aumentar a

confiabilidade e o desempenho, sem conhecimento das réplicas por parte dos usuários ou

dos programadores de aplicativos; uma réplica é uma cópia de componente que

permanece sincronizada com seu original.

• Transparência de mobilidade: movimentação de recursos e clientes dentro de um sistema,

sem afetar a operação de usuários ou programas.

• Transparência de falhas: ocultação de falhas, possibilitando que usuários e programas

concluam suas tarefas, a despeito de falhas de componentes de hardware ou software.

• Transparência de desempenho: re-configuração do sistema para melhorar o desempenho à

medida que as cargas variam.

• Transparência de escalabilidade: expansão em escala do sistema e dos aplicativos, sem

alterar a estrutura do sistema ou os algoritmos de aplicativos.

Conforme o ANSA Reference Manual, as transparências mais importantes são a de

acesso e de localização, pois sua presença ou ausência afetam mais fortemente a utilização de

recursos distribuídos; na literatura, são referidas, conjuntamente, como transparência de rede.

Transparência de Escalabilidade

Transparência de Desempenho

Transparência de Falhas

Transparência de Mobilidade

Transparência de Replicação

Transparência de Concorrência

Transparência de Acesso

Transparência de Localização

Page 31: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

30

2.4 Desafios Encontrados no Design de Sistemas Distribuídos

Apesar de as aplicações distribuídas oferecerem muitos benefícios potenciais, elas são

mais difíceis de serem projetadas, implementadas, otimizadas e gerenciadas do que as

aplicações centralizadas. Além disso, afirmam Schmidt et al. (2000) que no contexto destes

tópicos muitos desafios de design e de programação surgem devido a várias complexidades

inerentes e acidentais associadas com sistemas concorrentes e em rede.

As complexidades inerentes comuns associadas com sistemas distribuídos incluem: (a)

gerenciamento de largura de banda; (b) minimização de atrasos (latência) e variação de atraso;

(c) detecção e recuperação de falhas parciais; (d) determinação do particionamento adequado

de serviços e estratégias para balanceamento de carga; e (e) garantia de ordenação causal de

eventos (SCHMIDT et al., 2000).

As complexidades acidentais associadas com sistemas distribuídos incluem: (a) falta

de APIs (Application Programming Interfaces) portáveis do SO; (b) suporte inadequado à

depuração e falta de ferramentas para análise de aplicações concorrentes em rede; (c) uso

difundido de decomposição algorítmica (ao invés de decomposição orientada a objetos); (d) e

re-descoberta e re-invenção contínua de conceitos core e componentes comuns.

2.4.1 Desafio: Acesso e Configuração de Serviços

Os componentes em uma aplicação centralizada podem colaborar em um único espaço

de endereçamento por meio de passagem de parâmetros através de chamadas de funções e por

meio de acesso a variáveis globais. Em contraste, conforme (SCHMIDT et al., 2000), os

componentes em aplicações distribuídas podem colaborar usando: Mecanismo de

comunicação inter-processo (IPC); Protocolos de comunicação; Operações remotas em

componentes de serviços em nível de aplicação usando middleware de comunicação de alto

nível, tais como COM+ e CORBA.

As aplicações e os componentes de software podem acessar estes mecanismos de

comunicação via APIs definidas em todos os níveis de abstração em um sistema conectado

em rede, conforme mostra a Figura 2.7.

Page 32: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

31

Figura 2.7 – Mecanismos de Comunicação via APIs em Sistemas Distribuídos – Fonte: Adaptado de

(SCHMIDT et al., 2000, p. 9)

O suporte à evolução estática e dinâmica de serviços e aplicações é outro desafio em

sistemas de software distribuídos. A evolução pode ocorrer de duas formas:

• As interfaces e a conectividade entre papéis de serviços de componentes podem se alterar

em tempo de execução, e novos papéis podem ser instalados nos componentes existentes.

• O desempenho de sistemas distribuídos pode ser melhorado por meio da re-configuração

da carga dos serviços para aproveitar o poder de processamento de múltiplos hosts.

Um desafio de design é garantir que um sistema inteiro não necessite ser desativado,

re-compilado, re-ligado, e reiniciado simplesmente porque um determinado serviço em um

componente é re-configurado ou sua carga é re-distribuída.

Em (SCHMIDT et al., 2000) encontram-se alguns padrões para o design de APIs de

programação efetivas para acessar e configurar serviços e componentes em sistemas de

software e aplicações centralizadas e distribuídas: Wrapper Facade, Component

Configurator, Interceptor, e Extension Interface.

2.4.2 Desafio: Tratamento de Falhas

À medida que os sistemas se tornam cada vez mais distribuídos, as técnicas de

desenvolvimento de software que dão suporte às aplicações orientadas a eventos têm se

tornado cada vez mais pervasivas, de modo que tais aplicações são estruturadas com

arquiteturas em camadas com “inversão de controle”, conforme mostra a Figura 2.8.

pedido de operação

argumentos de entrada

argumentos de saída + valor de retorno

Rede

Cliente Serviço Camada de Aplicação

Kernel e Protocolos do SO Camada do SO

API

Kernel e Protocolos do SO

API

Middleware

API API

API

Camada do Middleware

Page 33: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

32

Figura 2.8 – Aplicações Orientadas a Eventos estruturadas em camadas –

Fonte: Adaptado de (SCHMIDT et al., 2000, p. 14)

Na camada da base estão as fontes de eventos, as quais detectam e recuperam eventos

de vários dispositivos de hardware ou drivers de dispositivos de software de baixo nível que

residem dentro de SO. Na próxima camada está o demultiplexador de eventos, o qual usa

funções para aguardar por eventos que chegam das várias fontes e então despacha eventos

callbacks para seus manipuladores de eventos correspondentes. Os manipuladores de eventos,

juntos com o código da aplicação, formam outra camada que executa processamento

específico da aplicação em resposta aos callbacks – vem daqui a expressão “inversão de

controle”.

O trabalho de Schmidt et al. (2000), apresenta padrões que descrevem como iniciar,

receber, demultiplexar, despachar, e processar vários tipos de eventos efetivamente em

frameworks de software conectados em rede, quais sejam: Reactor, Proactor, Asynchronous

Completion Token, e Acceptor-Connector.

2.4.3 Desafio: Concorrência

O termo concorrência refere-se a uma família de políticas e mecanismos que

possibilitam a um ou mais processos, ou threads, executarem suas tarefas de processamento

de serviço simultaneamente (SCHMIDT et al., 2000).

Conforme definido em (SCHMIDT et al., 2000), um processo é “uma coleção de

recursos, tais como memória virtual, manipuladores de I/O, e manipuladores de sinais, que

fornecem o contexto para a execução das instruções de programa”; e uma thread é “uma

seqüência única de passos de instrução no contexto de um processo”.

A opinião dos pesquisadores na literatura é unânime ao considerar “notavelmente

difícil” o desenvolvimento de aplicações concorrentes eficientes, previsíveis, escaláveis, e

robustas, pois uma fonte de complexidade surge dos riscos comuns ao multi-threading, por

exemplo: impasses (deadlocks). Outra fonte de complexidade surge das limitações com

métodos de desenvolvimento, ferramentas, e plataformas de SOs existentes. A

Código da Aplicação

Manipuladores de Eventos

Demultiplexador

Fontes de Eventos

executa loop de eventos despacha callbacks

Page 34: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

33

heterogeneidade das plataformas de hardware e de software complica o desenvolvimento de

aplicações e ferramentas concorrentes que devem executar sobre múltiplos SOs.

Padrões de design de propósito geral, tais como Adapter (GAMMA et al., 1995) e

Wrapper Facade (SCHMIDT et al., 2000), podem ser aplicados para proteger o software

concorrente das complexidades acidentais das APIs. Em (SCHMIDT et al., 2000), encontram-

se alguns Padrões de Concorrência, incluindo cinco padrões que definem vários tipos de

arquiteturas de concorrência para componentes, subsistemas e aplicações inteiras; são eles:

Active Object, Monitor Object, Half-Sync/Half-Async, Leader/Followers, e Thread-Specific

Storage.

2.4.4 Desafio: Sincronização

A eficiência, a receptividade, e o design de muitas aplicações distribuídas podem se

beneficiar do uso dos mecanismos e dos padrões de concorrência. Por exemplo, objetos em

uma aplicação podem ser executados concorrentemente em diferentes threads para simplificar

a estrutura do programa. Se múltiplos processadores estão disponíveis, as threads podem ser

programadas para explorarem o verdadeiro paralelismo em hardware e, por conseguinte,

melhorar o desempenho (SCHMIDT et al., 2000).

Quatro Padrões de Sincronização, os quais aliviam os problemas descritos acima para

simplificar a serialização e travas em sistemas concorrentes, são descritos em (SCHMIDT et

al., 2000): Scoped Locking, Strategized Locking, Thread-Safe Interface, e Double-Checked

Locking Optimization.

2.4.5 Desafios genéricos

Segundo (SCHMIDT et al., 2000), não obstante os quatro tópicos cobertos acima –

acesso e configuração de serviços, manipulação de eventos, concorrência, e sincronização –

representem os principais desafios do desenvolvimento de software distribuído, os

desenvolvedores de software de aplicações distribuídas devem tratar outras questões, tais

como confiabilidade, nomeação de serviços, e seleção de locais:

• Confiabilidade. Uma das razões para a adoção de uma arquitetura distribuída é a

melhoria da confiabilidade e a prevenção de pontos únicos de falhas. Conforme atestam.

A detecção de erros em aplicações distribuídas é mais difícil, devido ao conhecimento

incompleto do estado do sistema global.

• Nomeação de Serviços e Seleção de Locais. As aplicações distribuídas requerem

mecanismos mais elaborados para nomear, fixar em um local, e selecionar seus serviços

Page 35: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

34

remotos. Endereços de IP hosts e números de portas TCP são esquema de endereçamento

de serviços remotos comuns usados por CORBA, DCOM, Java RMI, DCE, e SunRPC.

Entretanto, estes mecanismos de baixo nível são freqüentemente inadequados para

sistemas conectados em rede em larga escala, pois eles são difíceis de serem

administrados de uma maneira portável e não-ambígua. A computação de objetos

distribuídos e o middleware RPC, conseqüentemente, fornecem brokers de locais que

permitem aos clientes acessarem serviços através de nomes de alto nível ao invés de fazê-

lo por meio de endereços de IP e números de portas TCP de baixo nível.

Buschmann et al., (1996) apresentam uma série de padrões relacionados à vinculação

de nomes e locais de serviços.

2.5 Considerações Não obstante os sistemas distribuídos possam garantir muitos benefícios, eles são

inerentemente mais complexos em relação aos sistemas centralizados, o que dificulta o seu

design, implementação, otimização, e gerenciamento e manutenção. O uso de padrões

arquiteturais é capaz de alavancar o trabalho do desenvolvedor, provendo soluções

comprovadas para problemas recorrentes, possíveis de atenuar as dificuldades inerentes e

acidentais.

Para que a complexidade do desenvolvimento de sistemas distribuídos seja amenizada,

faz-se necessário o uso de técnicas e métodos de engenharia de software avançados. O

princípio da separação de interesses (SoC – Separation of Concerns) já no design arquitetural

de um sistema distribuído é de suma importância para o êxito do projeto.

Também ficou evidente que a arquitetura de um sistema distribuído é dinâmica,

devendo, em muitos casos, ser re-configurada em tempo de execução, e que a tendência é que

cada vez mais os sistemas distribuídos atuais sejam compostos de componentes móveis. Tais

características exigem recursos de modelagem que permitam ao designer a representação de

tais características em nível arquitetural, de modo que uma avaliação preliminar possa ser

realizada, minimizando os custos decorrentes de ajustes necessários em fases mais avançadas

do ciclo de vida do software.

Page 36: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

35

3 – Arquitetura de Software

3.1 Introdução

A Arquitetura de Software emergiu como uma importante disciplina da engenharia de

software, particularmente no campo do desenvolvimento de sistemas de grande porte. Para

Clements et al. (2003), arquitetura “é o particionamento prudente de um todo em partes, com

relações específicas entre as partes”; sustentam também que é o que permite a um grupo de

pessoas (freqüentemente separadas por limites organizacionais, geográficos, ou até mesmo

temporais) trabalharem, cooperativamente e produtivamente, juntas para solucionar um

problema muito maior do que qualquer uma delas seria capaz de fazê-lo individualmente.

Para quase todos os sistemas, os atributos de qualidade (BOEHM; IN, 1996) ou metas

de engenharia – tais como desempenho, confiabilidade, segurança, ou modificabilidade – são

tão importantes quanto assegurar que o software compute a resposta correta. É na arquitetura

onde estas metas de engenharia são encontradas. Segundo (CLEMENTS et al., 2003), a

documentação da arquitetura comunica a consecução dessas metas:

• Se for requerido alto desempenho, é necessário: (i) preocupar-se com a decomposição do

trabalho em processos cooperativos; (ii) gerenciar o volume da comunicação inter-

processo e as freqüências de acesso aos dados; (iii) identificar potenciais gargalos de

desempenho; e (iv) entender as ramificações de uma falha de rede ou de processador.

• Se o sistema necessita de alta precisão, deve-se prestar atenção em como os elementos de

dados são definidos e usados.

• Se a segurança é importante, faz-se necessário: (i) elaborar restrições de relacionamentos

de usos e de comunicação entre as partes; (ii) detectar com precisão partes do sistema que

são vulneráveis às intrusões externas; e (iii) possivelmente introduzir componentes

específicos e com confiabilidade.

• Se for requerido suporte à modificabilidade ou portabilidade, deve-se separar

cuidadosamente os interesses entre as partes do sistema.

• Se for preciso produzir o sistema de modo incremental, por meio da liberação (releases)

de subconjuntos sucessivamente maiores, deve-se manter os relacionamentos de

dependência entre as peças não entrelaçadas a fim de evitar a síndrome do “nada funciona

até que tudo funcione”.

O restante deste capítulo encontra-se organizado como segue. Na Seção 3.2 são

apresentados os principais conceitos associados ao presente tópico. Na Seção 3.3 explicam-se

as principais finalidades de uma documentação arquitetural. Na Seção 3.4 é apresentado um

Page 37: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

36

conteúdo abrangente sobre visões arquiteturais. Por fim, algumas considerações concernentes

ao conteúdo abordado neste capítulo são expressas na Seção 3.5.

3.2 Conceito

É mister estabelecer uma base comum acerca do que se entende por arquitetura de

software, pois, não obstante o termo arquitetura de software tenha múltiplas definições,

nenhuma definição universal existe ainda (SEI, 2006).

“A arquitetura de software de um programa ou sistema computacional é a estrutura

ou estruturas do sistema, que compreende componentes de software, as propriedades

externamente visíveis desses componentes, e os relacionamentos entre eles. Por

“propriedades externamente visível”, estamos nos referindo às hipóteses que outros

componentes podem fazer sobre um componente, tal como seus serviços fornecidos,

características de desempenho, manipulação de falhas, uso de recurso compartilhado,

e assim por diante” (BASS; CLEMENTS; KAZMAN, 1998).

Ao analisarmos muitas das definições encontradas na literatura (PERRY; WOLF,

1992), (GARLAN; SHAW, 1993), (GARLAN; PERRY, 1995), (IEEE, 2000), (BOOCH;

RUMBAUGH; JACOBSON; 2005), observamos que elas proporcionam uma perspectiva

estrutural sobre arquitetura de software: defendem que arquitetura de software é composta de

elementos, conexões entre eles, e, usualmente, alguns aspectos tais como configuração ou

estilo, restrições e semântica, análises ou propriedades, ou análise racional, requisitos, ou

necessidades de stakeholders3.

Shaw (1995) observou que, além da perspectiva estrutural acerca da arquitetura,

adicionalmente existem outras três importantes perspectivas:

• Modelos de framework são similares à perspectiva estrutural, mas sua ênfase principal está

na estrutura única e coerente do sistema como um todo, o oposto de concentrar-se em sua

composição. A perspectiva de framework concentra-se em arquiteturas de software de

domínio específico ou repositórios de domínio específico e, freqüentemente, elevam o

middleware ou a infra-estrutura de comunicação para um papel distinto.

• Modelos dinâmicos enfatizam a qualidade comportamental de sistemas. “Dinâmico”

refere-se a alterações na configuração geral do sistema, estabelecendo ou desabilitando

caminhos de interação ou comunicação pré-habilitados envolvidos no progresso de

computação, tal como alteração de valores de dados.

3 A norma IEEE 1471 (IEEE, 2000), considera como sendo um stakeholder o “o indivíduo, a equipe, ou a organização (ou classes deles) com interesse em um sistema, ou preocupações relativas a um sistema”.

Page 38: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

37

• Modelos de processos concentram o foco na construção da arquitetura e nos passos ou

processos envolvidos nessa construção. A partir desta perspectiva, a arquitetura é o

resultado do ato de seguir um script de processo.

Vê-se que essas perspectivas não se excluem, tampouco representam um conflito

fundamental sobre o que é a arquitetura de software. Pelo contrário, elas representam aquilo

que a comunidade de software acredita que deve ser enfatizado e colocado na arquitetura:

suas partes constituintes, a entidade como um todo, a forma como ela se comporta uma vez

construída ou a construção dela.

3.2.1 Arquitetura versus Design

Trata-se de uma questão que tem incomodado a comunidade de arquitetura de

software, mas felizmente uma resposta elucidativa é fornecida em (CLEMENTS et al., 2003):

“Arquitetura é design, mas nem todo design é arquitetural. Isto é, muitas decisões de

design não são restringidas pela arquitetura e, felizmente, são deixadas ao critério e

bom julgamento subseqüentes dos designers e implementadores. A arquitetura

estabelece restrições sobre as atividades subseqüentes, e essas atividades devem

produzir artefatos – designs e códigos de fina granularidade – que estão de acordo com

o estabelecido na arquitetura, apesar de a arquitetura não definir a implementação.”

Disso, emerge a questão: “Quais decisões são não-arquiteturais? Isto é, quais decisões

a arquitetura deixa livre e a critério de outros?” Para responder a esta questão, faz-se

necessário retornar à definição de arquitetura de software, citada na seção anterior, extraída de

(BASS; CLEMENTS; KAZMAN, 1998): “... a estrutura ou estruturas do sistema, cada uma

das quais compreende elementos, as propriedades externamente visíveis desses elementos, e

os relacionamentos entre eles”.

Se uma propriedade de um elemento arquitetural não é visível, ou discernível, para

qualquer outro elemento arquitetural, esse elemento não é arquitetural. A seleção de uma

estrutura de dados, paralelamente aos algoritmos para gerenciar o acesso a essa estrutura de

dados, é um exemplo típico.

Segundo Clements et al., (2003), não há escala, ou escopo, ou medida, ou linha que

divide o que é arquitetural e o que não é. Para uma pessoa, uma determinada representação

arquitetural pode ser a implementação da arquitetura de outra pessoa e vice-versa.

Outro questionamento surge: “Quando um arquiteto deve parar de decompor módulos

em módulos menores e atribuições de trabalhos menores?” Uma heurística advém de Parnas e

Clements (1986): eles dizem que um módulo está “pequeno o suficiente” quando, face a uma

alteração, seria tão fácil recodificá-lo quanto alterá-lo.

Page 39: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

38

Garlan e Shaw (1993) afirmam que “as decisões são arquiteturais ou não, de acordo o

contexto”. Se uma dada estrutura é importante para o alcance das metas do sistema, então essa

estrutura é arquitetural. Todavia, os designers de elementos, ou subsistemas, a quem foram

atribuídos trabalhos, podem ter que introduzir suas próprias estruturas a fim de alcançar suas

metas: nesses casos, eles considerarão tais estruturas como sendo elementos arquiteturais.

3.2.2 Especificação, Representação, Descrição ou Documentação?

Outra questão suscitada pela comunidade refere-se a qual denominação deve ser dada

à atividade de escrever a arquitetura de software. Em (CLEMENTS et al., 2003), os autores

discutem a terminologia como segue:

• O termo especificação tende a dar a conotação de uma versão de arquitetura em uma

linguagem estritamente formal.

• O termo representação dá a conotação de um modelo, uma abstração, uma versão de uma

coisa a qual se encontra separada ou diferente da própria coisa.

• O termo descrição foi apropriado pela comunidade de ADLs.

• O termo documentação denota a criação de um artefato denominado arquitetura de

software: um documento que pode compreender arquivos eletrônicos ou papéis.

Portanto, Clements et al. (2003) consideram que este último termo é o que pode ser

mais adequadamente usado. De fato, este termo possui razoável abrangência. A essência da

atividade é escrever, e manter atualizados, os resultados de decisões arquiteturais para que os

stakeholders da arquitetura tenham a informação que eles necessitam de uma forma acessível

e não ambígua.

3.2.3 Interfaces

Uma interface é uma fronteira por meio da qual duas entidades independentes se

encontram e interagem ou se comunicam (BASS; CLEMENTS; KAZMAN, 2003). É possível

e provável que uma entidade tenha mais do que uma interface por meio da qual ela interage

ou se comunica. Uma interface é mais do que uma lista de seus serviços disponíveis.

Idealmente, a especificação de uma interface deve prover informação suficiente para evitar

interações inesperadas que podem ocorrer devido a hipóteses que uma entidade faz sobre o

ambiente no qual ela será inserida ou sobre as entidades com as quais ela interage.

3.2.4 Módulos versus Componentes

Durante os anos 1960 e 1970, houve o incremento do tamanho dos sistemas de

software, os quais não eram mais possíveis de serem produzidos por uma única pessoa. Isso

tornou claro que novas técnicas eram necessárias para gerenciar a complexidade do software e

Page 40: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

39

particionar o trabalho entre programadores. Para lidar com tais questões de “programação em

larga escala”, vários critérios foram introduzidos para auxiliar os programadores sobre como

particionar seus softwares. O encapsulamento, a ocultação de informação, e tipos de dados

abstratos, tornaram-se os paradigmas de design dominantes, usando o termo módulo como o

portador desse significado (PARNAS, 1972).

Os anos 1970 e 1980 testemunharam o advento de “linguagens de interconexão de

módulos” (DEREMER; KRON, 1975) e as características de novas LPs tais como módulos da

Modula, classes da Smalltalk, pacotes da Ada: o paradigma OO traz em seu cerne esses

conceitos de módulo. Os componentes, por contraste, estão em evidência com a engenharia de

software baseada em componentes (SZYPERSKI, 1998) e com a perspectiva de componente-

e-conector na área da arquitetura de software.

Ambos os movimentos aspiram atingir a construção e a evolução rápida de sistemas

por meio da seleção, montagem, e reposição indiscriminada de sub-peças independentes.

Ambos, módulos e componentes, estão relacionados à decomposição de um sistema de

software completo em partes constituintes. Conforme (CLEMENTS et al., 2003), esses dois

termos assumem diferentes significados:

• Módulo: tende a referir-se a uma entidade em tempo de design. O trabalho fundamental

de Parnas (1972) sobre design de módulos usou a ocultação de informação como critério

para a alocação de responsabilidade a um módulo. A informação que, provavelmente,

mudaria no decorrer do ciclo de vida de um sistema, tal como a escolha de estrutura de

dados ou algoritmos, era associada a um módulo, que tinha uma interface por meio da

qual seus recursos eram acessados.

• Componente: tende a referir-se a uma entidade em tempo de execução. Shaw e Garlan

(1996), por exemplo, falam da arquitetura de um sistema como uma coleção de

“componentes computacionais” – ou simplesmente “componentes” – paralelamente com

uma descrição de suas interações. Szyperski (1998) afirma que um componente “pode ser

implantando independentemente e está sujeito a composição com terceiros”. Herzum e

Sims (2000) dizem que um componente é “uma parte auto-contida de software com uma

interface bem definida ou conjunto de interfaces”. Deduz-se uma clara conotação de

tempo de execução e implantação; isto é, o componente tem interfaces que são acessíveis

em tempo de execução e, em alguns pontos no seu ciclo de vida do seu desenvolvimento,

o componente pode ser independentemente entregue e instalado. A ênfase está claramente

no produto acabado e não nas considerações de design que vão nele.

Page 41: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

40

Em resumo, um módulo sugere propriedades de encapsulamento, com menos ênfase

no meio de distribuição e no que continuará em tempo de execução. Não é assim com os

componentes: um arquivo de código binário distribuído mantém sua individualidade durante a

execução, pois um componente sugere unidades de software implantadas independentemente,

sem visibilidade no processo de desenvolvimento (CLEMENTS et al., 2003).

Obviamente há sobreposição. O tipo de visão módulo (veja Seção 3.4.3) contém

estilos que refletem principalmente considerações em tempo de design: decomposições que

associam partes do problema a unidades de design e desenvolvimento, camadas que refletem

quais usos são permitidos enquanto o software é escrito, e classes que fatoram a existência de

atributos comuns a partir de um conjunto de instâncias. Naturalmente, todos estes estilos têm

implicações em tempo de execução. Similarmente, o tipo de visão componente-e-conector

(veja Seção 3.4.4) contém estilos que focalizam sobre como os processos interagem e os

dados trafegam pelo sistema durante a execução. Todos estes efeitos em tempo de execução

são resultantes das cuidadosas atividades em tempo de design (CLEMENTS et al., 2003).

Embora seja uma superposição conceitual, uma determinada arquitetura, geralmente,

também exibirá uma sobreposição concreta. Um elemento documentado em uma visão de

módulo pode se apresentar em uma visão componente-e-conector como as manifestações em

tempo de execução do seu próprio tempo de design. Como um componente, o elemento pode

estar replicado várias vezes – por meio de diferentes processadores, por exemplo. Como um

módulo, entretanto, é muito improvável que ele seja duplicado, pois dificilmente seria pedido

a alguém para produzir a mesma parte de código duas vezes (CLEMENTS et al., 2003).

Módulos e componentes representam o real fundamento da abordagem de engenharia

de software para sistemas de software rapidamente construídos e facilmente modificáveis.

Como tais, os módulos e os componentes servem como blocos de construção fundamentais à

criação e documentação de arquiteturas de software (BASS; CLEMENTS; KAZMAN, 2003).

3.3 Usos da Documentação Arquitetural

Na visão de Clements et al. (2003), a documentação arquitetural deve: (a) ser

suficientemente abstrata para ser rapidamente entendida por novos stakeholders; (b) ser

suficientemente detalhada para servir como uma planta para construção; (c) ter informação

suficiente para servir como uma base para análise. A documentação arquitetural é prescritiva

(para algumas audiências, ela prescreve o que deve ser verdadeiro, impondo restrições nas

decisões a serem tomadas) e descritiva (para outras audiências, ela descreve o que é

Page 42: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

41

verdadeiro, relatando decisões já tomadas sobre o design). Segundo (CLEMENTS et al.,

2003), uma documentação arquitetural pode ser utilizada como um(a):

1. Meio de educação: O uso educacional consiste na introdução de pessoas ao sistema

(novos membros da equipe, analistas externos, ou até novo arquiteto).

2. Veículo primário de comunicação: Um uso preciso da arquitetura como um veículo de

comunicação depende de quais stakeholders estão fazendo a comunicação. Alguns

exemplos estão descritos na Tabela 3.1.

Tabela 3.1: Documentação da arquitetura e os stakeholders – Fonte: (CLEMENTS et al., 2003)

Stakeholder Comunicação

Arquitetos e engenheiros de requisitos representando o cliente

Um fórum para negociação e realização de trade-offs4 entre

os requisitos que competem entre si.

Arquitetos e designers das partes constituintes

Para solucionar a contenção de recursos e estabelecer desempenho e outros tipos de orçamento de consumo de recursos em tempo de execução.

Implementadores Para prover restrições invioláveis e liberdades exploráveis nas atividades de desenvolvimento subseqüentes.

Testadores e integradores Para especificar o comportamento caixa-preta correto das partes que devem se unir, adequadamente.

Responsáveis pela manutenção Um ponto de partida para as atividades de manutenção, revelando as áreas que uma possível futura alteração afetará.

Designers de outros sistemas com os quais este deve inter-operar

Definir o conjunto de operações fornecidas e requeridas e os protocolos para suas operações.

Gerentes Base para a formação de equipes de desenvolvimento correspondentes às atribuições de trabalhos identificados, estrutura do desdobramento de trabalho, planejamento, alocação de recursos de projeto, e rastreamento de progresso.

Gerentes de linhas de produto Para determinar se um possível novo membro de uma família de produto está dentro ou fora do escopo.

Equipe de garantia de qualidade Base para a verificação da conformidade, e garantia que a implementação está sendo fiel às prescrições arquiteturais.

Uma arquitetura pode ser re-usada em outros sistemas para os quais ela for apropriada.

Se gerenciada com cautela, uma família inteira de produtos pode ser produzida usando-se uma

única arquitetura. Neste caso, sua importância é ampliada, pois poderá servir como uma

planta para desenvolvimento de uma linha de produtos (CLEMENTS; NORTHROP, 2002).

3. Base para análise do sistema: Para dar suporte à análise, a arquitetura deve conter a

informação necessária à análise particular sendo executada (CLEMENTS et al., 2003):

4 Análise dos prós e dos contras; balanceamento das forças;

Page 43: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

42

• Para os engenheiros de software que analisam o desempenho, a documentação da

arquitetura provê o modelo formal que direciona as ferramentas de análise, tais como

análise de escalonamento em tempo real e simulações. Estas ferramentas requerem

informações sobre consumo de recursos, política de escalonamento e dependências.

• A documentação da arquitetura serve para alimentar os métodos de avaliação, devendo

conter a informação necessária para avaliar uma variedade de atributos, tais como

segurança, desempenho, usabilidade, disponibilidade, e modificabilidade.

A arquitetura representa o primeiro mapeamento dos requisitos para os componentes

computacionais. A alocação de funcionalidades para cada componente consiste em uma

codificação das decisões de design preliminares sobre um projeto. Todas as decisões de

design subseqüentes (ex.: design detalhado, implementação) devem ser consistentes com as

escolhas arquiteturais (BASS; CLEMENTS; KAZMAN, 2003).

Uma arquitetura pode permitir ou impedir a realização da maioria dos atributos de

qualidade (BOEHM; IN, 1996) almejados em um sistema, tais quais os exemplificados em

(KAZMAN et al., 1994): (i) a modificabilidade depende extensivamente da modularização

do sistema, a qual reflete as estratégias de encapsulamento; (ii) a reusabilidade dos

componentes depende fortemente do quão fortemente acoplados eles estão com outros

componentes no sistema; e (iii) o desempenho depende muito do volume e complexidade da

comunicação de coordenação inter-componente, especificamente se os componentes são

processos fisicamente distribuídos. Uma arquitetura incorpora decisões sobre as prioridades e

o trade-off das qualidades, e representa a primeira oportunidade para a avaliação destas

decisões e balanceamentos, sendo a primeira abordagem para atingir os atributos de qualidade

(CLEMENTS; KAZMAN; KLEIN, 2002).

Clements et al. (2003) enumeram as seguintes regras para que a atividade de

documentação arquitetural alcance resultados sólidos e eficazes:

� Regra 1: Escrever a documentação a partir do ponto de vista do leitor.

� Regra 2: Evitar repetição desnecessária.

� Regra 3: Evitar ambigüidade (explicar a notação).

� Regra 4: Usar uma organização padronizada.

� Regra 5: Registrar a análise racional (rationale).

� Regra 6: Manter a documentação atualizada.

� Regra 7: Revisar a documentação para ajuste de propósito.

Page 44: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

43

3.4 Visões Arquiteturais

Parnas (1974) observou que o software consiste de muitas estruturas, que podem ser

definidas como descrições parciais mostrando um sistema como uma coleção de partes e

mostrando algumas relações entre as partes. Esta ainda definição persiste nos artigos de

arquitetura atuais. Parnas (1974) também identificou várias estruturas predominantes no

software. Algumas eram mais específicas para SOs, tais como a estrutura que define qual

processo possui qual segmento de memória, mas outras são mais genéricas e amplamente

aplicáveis. Estas incluem: estrutura de módulo (unidades são atribuições de trabalho, a

relação é-uma-parte-de ou compartilha-parte-do-mesmo-segredo-como) a estrutura usa

(unidades são programas, e a relação é depende-da-corretude-de) e a estrutura de processos

(unidades são processos, e a relação é dá-trabalho-computacional-para).

Perry e Wolf (1992) reconheceram que, semelhantemente à arquitetura de um edifício,

uma variedade de visões de um sistema são requeridas. Cada visão enfatiza certos aspectos

arquiteturais usados por diferentes stakeholders ou para diferentes propósitos.

Kruchten (1995) descreve quatro visões principais de arquitetura de software que

podem ser usadas com grande vantagem na construção de sistemas, paralelamente com uma

quinta visão distinta que vincula as outras quatro: a abordagem para arquitetura “4+1”:

1. A visão lógica: Primariamente, dá suporte a requisitos comportamentais (os serviços que o

sistema deve oferecer aos usuários finais). Os designers decompõem o sistema em um

conjunto de abstrações chaves, extraídas principalmente a partir do domínio do problema.

2. A visão de processo: Lida com a concorrência e distribuição, integridade do sistema e

tolerância a falhas. Também especifica qual thread de controle executa cada operação

identificada na visão lógica. Esta visão pode ser vista como um conjunto de redes lógicas

de programas de comunicação executando independentemente (processos) que estão

distribuídos ao longo dos recursos de hardware, os quais por sua vez estão conectados por

uma rede de barramento ou LAN, ou rede WAN.

3. A visão de desenvolvimento: Centraliza o foco na organização dos módulos do software

no ambiente de desenvolvimento de software. As unidades desta visão são as partes do

software (bibliotecas de programa ou subsistemas) que podem ser desenvolvidos por um

ou mais desenvolvedores. A visão de desenvolvimento dá suporte à alocação de requisitos

e trabalho para equipes e dá suporte à avaliação de custos, planejamento, monitoramento

de progresso, e raciocínio sobre reuso de software, portabilidade, e segurança.

Page 45: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

44

4. A visão física: Leva em conta os requisitos do sistema, tais como disponibilidade do

sistema, confiabilidade, desempenho, e escalabilidade. Esta visão mapeia os vários

elementos identificados nas visões lógica, de processo e de desenvolvimento (redes,

processos, tarefas, e objetos) para nós de processamentos.

Além disso, Kruchten (1995) descreve um pequeno subconjunto de cenários

importantes (instâncias de casos de uso) para mostrar que os elementos das quatro visões

trabalham juntos. Esta é a visão “+1”, redundante com as outras, mas servindo a um propósito

distinto. A abordagem “4+1” tem sido adotada como uma peça fundamental do RUP

(Rational Unified Process).

Soni, Nord, e Hofmeister (1995) chegaram a algumas conclusões similares sobre

visões arquiteturais em função ao que eles observaram no uso prático na indústria:

• A visão conceitual descreve o sistema em termos de seus principais elementos de design e

os relacionamentos entre eles.

• A visão de interconexão de módulos abrange duas estruturas ortogonais: decomposição

funcional e camadas.

• A visão de execução descreve a estrutura dinâmica de um sistema.

• A visão de código descreve como o código fonte, binários, e bibliotecas são organizados

no ambiente de desenvolvimento.

Outros “conjuntos de visões” têm emergido, como por exemplo, as visões de Herzum

e Sims (2000), os quais prescrevem as quatro seguintes visões como sendo as mais

importantes:

• A arquitetura técnica, focalizada no ambiente de execução de componentes, o conjunto de

ferramentas, o framework de interface com o usuário, e outros serviços/facilidades

técnicas requeridas para desenvolver e executar um sistema baseado em componentes.

• A arquitetura da aplicação, interessada com o conjunto de decisões arquiteturais, padrões

(patterns), diretrizes, e normas (standards) necessários para a construção do sistema.

• A arquitetura do gerenciamento de projeto, a qual consiste nos elementos (os conceitos,

diretrizes, princípios, e ferramentas de gerenciamento) necessários para se construir um

grande sistema escalável com uma grande equipe.

• A arquitetura funcional, onde estão a especificação e a implementação do sistema.

Cada visão arquitetural é usada para um propósito diferente, freqüentemente por

diferentes stakeholders. Dessa forma, um conjunto de várias visões forma a unidade básica

para a documentação de uma arquitetura de software.

Page 46: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

45

3.4.1 Conceito de Visão Arquitetural

O conceito de visão está entre os mais importantes conceitos associados à

documentação de arquitetura de software, já que esta última é uma entidade complexa a qual

não pode ser descrita de um modo unidimensional. Uma visão é uma representação de um

conjunto de elementos de sistema e os relacionamentos associados a eles (CLEMENTS et al.,

2003). Diferentes visões dão suporte a diferentes metas e usos (PERRY; WOLF, 1992).

Kruchten (1995) afirma que “a essência da documentação consiste na supressão de

informação não necessária à tarefa em mãos” e, assim, “é de algum modo conveniente que a

natureza da arquitetura seja tal que ela nunca apresente seu todo para nós, mas apenas uma

faceta ou duas de cada vez”. Nenhuma das visões tem a capacidade de, individualmente,

documentar de modo adequado a arquitetura de software para o sistema. Isto é realizado pelo

conjunto completo de visões, paralelamente à informação que as transcende.

Clements et al. (2003) elaboraram um template para a documentação de uma visão, o

qual consiste no conjunto das informações seguintes:

1. Uma apresentação primária, usualmente gráfica, que representa os elementos primários e

os relacionamentos da visão.

2. Um catálogo de elementos que explica e define os elementos mostrados na visão, e lista

suas propriedades.

3. Uma especificação das interfaces e do comportamento dos elementos.

4. Um guia de variabilidade explicando quaisquer mecanismos built-in disponíveis para

adaptação da arquitetura.

5. A análise racional e informações de design.

6. A documentação que se aplica a tudo o que está contido nas visões.

7. Uma introdução ao pacote completo, incluindo uma seção “guia do leitor” que auxilia o

stakeholder a encontrar uma parte desejada da informação rapidamente.

8. Informações descrevendo como as visões relacionam entre si, e ao sistema como um todo.

9. Restrições e análise racional para a arquitetura global.

10. Informações de gerenciamento na forma como podem ser requeridas para efetivamente

manter o pacote completo.

3.4.2 Tipos de Visões e Estilos Arquiteturais

Conforme (CLEMENTS et al., 2003), um tipo de visão define os tipos de elementos e

os tipos de relacionamentos usados para se descrever a arquitetura de um sistema de software

Page 47: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

46

a partir de uma determinada perspectiva. Um tipo de visão restringe o conjunto de elementos

e relações que existem em suas visões.

Clements et al. (2003) alegam que os arquitetos precisam pensar sobre seus softwares

de três formas simultaneamente: (i) como ele é estruturado na forma de um conjunto de

unidades de implementação; (ii) como ele é estruturado na forma de um conjunto de

elementos que têm comportamentos e interações em tempo de execução; e (iii) como ele

relaciona-se em seu ambiente com estruturas que não são softwares. Cada visão cai numa das

categorias, chamadas de tipos de visões. Conforme (CLEMENTS et al., 2003), os três tipos de

visões são: (i) tipo de visão módulos, as visões de módulos documentam as principais

unidades de implementação de um sistema; (ii) tipo de visão componente-e-conector (C&C),

as visões C&C documentam as unidades de execução de um sistema; e (iii) tipo de visão

alocação, as visões de alocação documentam os relacionamentos entre um software de um

sistema e seus ambientes de desenvolvimento e de execução.

No âmbito de um determinado tipo de visão, formas recorrentes têm sido amplamente

observadas (até mesmo as escritas para sistemas completamente diferentes) (GARLAN;

SHAW, 1993). A descrição de cada tipo de visão inclui uma seção sobre variações e formas

que ocorrem com freqüência: isso é chamado de estilos arquiteturais ou estilos, os quais têm

implicações para a documentação arquitetural (SHAW, 1995).

Um estilo arquitetural é uma especialização de tipos de elementos e de relações,

juntamente com um conjunto de restrições sobre como eles podem ser usados (SHAW, 1995)

(SHAW; CLEMENTS, 1997). Um guia de estilo é a descrição de um estilo arquitetural que

especifica o vocabulário de design (conjunto de tipos de elementos e de relacionamentos) e as

regras (conjunto de restrições topológicas e semânticas) sobre como esse vocabulário pode ser

usado (GARLAN; SHAW, 1993).

Um estilo define uma família de arquiteturas que satisfazem determinadas restrições

(PARNAS, 1976). Os estilos permitem a alguém aplicar conhecimento de design

especializado a uma categoria particular de sistemas e oferecem suporte a essa categoria de

design de sistema com ferramentas, análise, e implementações específicas do estilo. A

literatura está repleta de estilos: (PARNAS, 1976), (NII, 1986), (ANDREWS, 1991),

(GARLAN; SHAW, 1993), (GARLAN; ALLEN, OCKERBLOON, 1994), (ABOWD;

ALLEN; GARLAN, 1995), (BUSCHMANN et al., 1996), (SHAW; CLEMENTS, 1997),

(MEDVIDOVIC; ROSENBLUM, 1997), (MONROE et al., 1997), (SCHMIDT et al., 2000).

Page 48: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

47

Por exemplo, os módulos podem ser arranjados em uma configuração útil restringindo

o que é permitido a cada um usar. O resultado é um estilo em camadas – uma espécie do

gênero tipo de visão módulos (veja Seção 3.4.3) – por meio do qual se concebe sistemas que

usam suas qualidades de modificabilidade, portabilidade, e a habilidade de extrair

rapidamente um subconjunto útil. Sistemas diferentes terão uma quantidade diferente de

camadas, conteúdos diferentes em cada camada, e regras diferentes para o que é permitido a

cada camada usar. Entretanto, o estilo em camadas é abstrato a respeito dessas opções e pode

ser estudado e analisado sem vinculá-las (CLEMENTS et al., 2003).

3.4.3 Tipo de Visão Módulos

De acordo com o definido em (PARNAS, 1972), um módulo é um código que

implementa um conjunto de responsabilidades. Um módulo pode ser uma classe, uma coleção

de classes, uma camada, ou qualquer decomposição da unidade de código. Todo módulo tem

uma coleção de propriedades atribuídas a ele. Estas propriedades têm a intenção de expressar

a informação relevante associada ao módulo, assim como restrições sobre o módulo.

Exemplos de propriedades são responsabilidades, informação de visibilidade, e autor.

Módulos têm relações entre si; ex.: é parte de ou herda de. Conforme (CLEMENTS et al.,

2003), os estilos do tipo de visão módulo são os seguintes:

1. Estilo decomposição: Representa a decomposição do código em sistemas, subsistemas,

sub-subsistemas, e assim por diante, representando uma visão top-down do sistema5.

Usado para dar uma visão geral do sistema e suas partes para os stakeholders, é

particularmente útil para a educação e comunicação em nível de gerência. Auxilia novos

membros da equipe de desenvolvimento a entender quais os seus papéis em termos de

desenvolvimento de código; é a base de designação de trabalhos e medidas de conclusões.

2. Estilo usa: Depende das relações usa, que é uma forma especial da relação depende-de. A

unidade de software P1 depende de P2 estar igualmente correta. Informa ao desenvolvedor

quais outros módulos devem existir para que sua parte do sistema possa executar

corretamente. Oferece suporte ao desenvolvimento incremental, já que possibilita a

identificação de subconjuntos do sistema que podem ser produzidos antecipadamente.

3. Estilo generalização: Mostra como diferentes unidades de código estão relacionadas uma

às outras, em uma hierarquia de classes: a determinação de quais classes herdam de outras

classes ocorre observando-se o estilo generalização. Comumente usado para expressar

designes OO, assim como dar suporte à uma variedade de formas de manutenção. O reuso

5 O termo sistema ou subsistema também tem uma interpretação em tempo de execução, e assim o seu uso necessita ser esclarecido em um contexto particular.

Page 49: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

48

é freqüentemente baseado em classes, novas funções são freqüentemente adicionadas por

meio da modificação de funções antigas, e a parte do código a ser reparada, no caso de um

erro, é usualmente especificada em termos de classes.

4. Estilo camadas: Organiza o código em camadas6 disjuntas onde o código em camadas

mais altas tem a permissão de usar código em camadas mais baixas, conforme regras pré-

definidas. Por exemplo, as regras podem estipular que apenas o código na camada

imediatamente inferior pode ser usado, ou que o código em qualquer camada inferior pode

ser usado, ou que o código em camadas inferiores pode ser usado. Este estilo é usado para

mostrar como o código é decomposto em máquinas virtuais. Tipicamente, os níveis

inferiores envolvem partes do sistema próximas ao hardware, incluindo o SO, enquanto

que as camadas mais altas contêm software mais dependente da aplicação. Este estilo é

usado para educação e para dar suporte ao reuso.

3.4.4 Tipo de Visão Componente-e-Conector (C&C)

Os estilos no tipo de visão componente-e-conector (C&C) expressam o

comportamento em tempo de execução; eles são descritos em termos de componentes e

conectores. Um componente é uma das principais unidades de processamento do sistema em

tempo de execução; um conector é um mecanismo de interação para os componentes. Objetos,

processos, ou coleções de objetos podem ser componentes. Quanto aos conectores, incluem

dutos, repositórios, e sockets (GARLAN, SHAW, 1994) (SHAW et al., 1995).

O middleware pode ser visto como um conector especial entre os componentes

(MEDVIDOVIC; DASHOFY; TAYLOR, 2003). Tanto os componentes quanto os conectores

podem ser decompostos em outros componentes e conectores; a decomposição de um

componente pode incluir conectores e vice-versa: por exemplo, a decomposição de um

middleware (um conector) produzirá vários componentes e conectores adicionais (SHAW et

al., 1995) (MORICONI; QIAN; RIEMENSCHNEIDER, 1995). Os componentes e conectores

têm propriedades que podem ser usadas para associar-se com a análise da arquitetura. Os

estilos do tipo de visão componente-e-conector são (CLEMENTS et al., 2003):

1. Estilo duto-e-filtro (pipe-and-filter): o padrão de interação é caracterizado por meio de

sucessivas transformações de dados. Os dados chegam a um filtro, é transformado, e é

passado através do duto para o próximo filtro no pipeline (metáfora do oleoduto).

Exemplos de tais sistemas são sistemas de processamento de sinais e os pipes do UNIX.

6 Uma camada é pode ser vista como um conjunto de código que forma uma máquina virtual e que interage com outras camadas somente de acordo regras pré-definidas.

Page 50: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

49

2. Estilo dados-compartilhados: centraliza-se na retenção dos dados persistentes. Múltiplos

elementos acessam os dados persistentes, os quais estão retidos em, no mínimo, um

repositório. Sistemas de banco de dados e sistemas de base de conhecimento são exemplos

de estilos dados-compartilhados. Uma característica de um estilo dados-compartilhados é:

como o consumidor de dados pode descobrir que os dados de interesse estão disponíveis.

3. Estilo publicar-subscrever: é caracterizado por componentes que interagem por meio de

anúncio de eventos. Os componentes podem se subscrever a um conjunto de eventos. O

estilo é comumente usado para desacoplar produtores e consumidores de mensagens. Este

desacoplamento permite a postergação da vinculação de produtores e consumidores de

mensagens até o momento da execução e, conseqüentemente, oferece suporte à

modificação destes produtores e consumidores.

4. Estilo cliente-servidor: mostra componentes interagindo por meio da requisição de

serviços de outros componentes (a comunicação é tipicamente formada por um par). Um

pedido de serviço de um cliente está emparelhado com o fornecimento desse serviço. Os

servidores neste estilo fornecem um conjunto de serviços por meio de uma ou mais

interfaces, e os clientes usam zero ou mais serviços fornecidos por outros servidores no

sistema. Pode haver um servidor central ou vários servidores distribuídos. Exemplos de

sistemas cliente-servidor incluem: (a) sistemas de janelas que particionam o sistema

conforme a aplicação cliente e o servidor de tela; (b) serviços de diretórios de nomes que

particionam de acordo com o solver de nomes e com o servidor de nomes; (c) sistemas de

banco de dados em três camadas que particionam o sistema de acordo aos clientes e

dados; e (d) sistemas distribuídos baseados na Web que particionam o sistema de acordo

com os interesses das aplicações clientes, lógica do negócio, e serviços de gerenciamento

de dados.

5. Estilo peer-to-peer: é caracterizado pela interação direta de pares de componentes

trocando serviços. A comunicação peer-to-peer é um tipo de interação pedido/resposta

encontrado no estilo cliente-servidor. Qualquer componente pode, em princípio, interagir

com qualquer outro componente por meio de requisição de serviços. Conseqüentemente,

os conectores neste estilo podem envolver protocolos de interações bidirecionais

complexos, refletindo a comunicação de duas vias que pode existir entre dois ou mais

componentes peer-to-peer. Exemplos de sistemas peer-to-peer incluem arquiteturas que

são baseadas em infra-estrutura de objetos distribuídos, tais como CORBA, COM+, e

Page 51: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

50

Java RMI. De forma mais geral, as visões arquiteturais de sistemas de objetos, tais

como as mostradas em diagramas de colaboração, podem ser exemplos deste estilo.

6. Estilo comunicação-processos: é distinguido por meio da interação de componentes

executando concorrentemente através de vários mecanismos de conectores. Exemplos dos

mecanismos de conectores são: sincronização, passagem de mensagem, troca de dados,

start, stop, etc. Os processos em comunicação são comuns na maioria dos sistemas de

grande porte e necessários em todo sistema distribuído. Conseqüentemente, para a maioria

dos sistemas, o estilo comunicação-processos é adequado para o entendimento de

qualquer comportamento associado à concorrência.

3.4.5 Tipo de Visão Alocação

Cada estilo do tipo de visão alocação descreve o mapeamento de unidades de software

a elementos do ambiente (hardwares, sistemas de arquivos, ou equipes de desenvolvimento).

O tipo de visão alocação inclui os seguintes estilos (CLEMENTS et al., 2003):

1. Estilo implantação: Mapeia processos a elementos de hardware: nós de processamento,

canais de comunicação, memórias, e armazém de dados (os elementos de software são

usualmente processos). Usado para: descrever como os processos são alocados ao

hardware e o tráfego de mensagem resultante: para análise de desempenho, segurança, e

confiabilidade; e como base para estimativa de custo de implantação de um único módulo.

2. Estilo implementação: Mapeia módulos do tipo de visão módulos para uma infra-

estrutura de desenvolvimento. Seus elementos são módulos e itens de configuração. É

usado para descrever como os módulos são mapeados a entidades dentro do sistema de

gerenciamento de configuração, assim como para gerenciar versões e ramificações e para

coordenar o desenvolvimento multi-equipes.

3. Estilo atribuição de trabalho: Mapeia módulos de um tipo de visão módulos para

equipes de desenvolvimento. Os elementos são módulos e equipes de

desenvolvimento. É usado para designar quais equipes são responsáveis por quais

elementos da estrutura de desdobramento de trabalho, assim como para informar

estimativas de cronograma e de orçamento.

3.5 Considerações

Arquitetura de software é uma representação de alto nível da estrutura dos

componentes e seus inter-relacionamentos, cujos princípios e diretrizes servem para guiar o

projeto em seu ciclo de vida, proporcionando meios para o particionamento efetivo e a

comunicação entre as diversas partes envolvidas no projeto.

Page 52: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

51

Os três tipos de visões – módulos, C&C, e alocação – representam as três perspectivas

que um arquiteto deve considerar quando do design de um sistema: o sistema como unidades

de implementação, o sistema como unidades executadas em tempo de execução, e o

mapeamento a partir dos elementos de software para as estruturas ambientais. Um tipo de

visão restringe os tipos de elementos e os tipos de relacionamentos correspondentes. Algumas

escolhas devem ser feitas até mesmo dentro dos limites de um tipo de visão: como os

elementos estão restritos, como eles se relacionam entre si, e restrições sobre seu uso ou

configuração.

Diferentes visões também expõem diferentes atributos de qualidade para diferentes

graus. Conseqüentemente, os atributos de qualidade que são de maior interesse a um grupo de

stakeholders no desenvolvimento do sistema afetará a escolha sobre quais visões devem ser

documentadas. Por exemplo, uma visão em camadas diz respeito à portabilidade do sistema,

uma visão de implementação conduz a um raciocínio sobre o desempenho e a confiabilidade

do sistema. As visões que devem ser documentadas dependem dos usos esperados da

documentação. Diferentes visões realçarão diferentes elementos e/ou relacionamentos do

sistema.

Um estilo é uma especialização de um tipo de visão e reflete padrões de interação

recorrentes, porém, até mesmo dentro dos limites de um estilo, escolhas devem ser feitas:

como os tipos de elementos e de relações em um estilo estão vinculados aos elementos e

relações em um sistema. No contexto de tipos de visões e estilos, conseqüentemente, uma

visão pode ser vista como um estilo que está vinculado a um sistema em particular.

Por exemplo, descreve-se o estilo publicar-subscrever (GARLAN; SHAW, 1993) em

termos de “componentes fracamente acoplados cujas interfaces permitem a publicação de

eventos e a subscrição aos eventos”, mas a descrição do estilo é independente de qualquer

estilo. Se for escolhido o estilo publicar-subscrever como estratégia de design para o sistema,

o arquiteto produzirá uma visão publicar-subscrever nomeando os elementos e os eventos que

eles publicam e os que eles aceitam.

Diversos pesquisadores constataram que nenhum sistema é construído exclusivamente

a partir de um único estilo, pois todo sistema pode ser visto como um amálgama de muitos

estilos diferentes. Alguns estilos ocorrem em todo sistema, mas há sistemas que exibem uma

combinação de estilos (GARLAN; SHAW, 1993), que pode ocorrer de várias formas

(CLEMENTS et al., 2003).

Diferentes “áreas” de sistemas podem exibir diferentes estilos. Por exemplo, um

sistema pode usar um estilo duto-e-filtro para processar dados de entrada, mas faz o

Page 53: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

52

roteamento do resultado para um banco de dados que é acessado por muitos elementos. Este

sistema seria uma mistura dos estilos duto-e-filtro e dados-compartilhados. A documentação

para este sistema incluiria: (a) uma visão duto-e-filtro que mostraria uma parte do sistema; e

(b) uma visão dados-compartilhados que mostraria a outra parte. Em um caso como este, um

ou mais elementos podem ocorrer em ambas as visões e podem ter propriedades de ambos os

tipos de elementos. (Por outro lado, as duas partes do sistema poderiam não se comunicar uma

com a outra.) Estes elementos pontes fornecem a continuidade de entendimento de uma visão

para a seguinte: têm múltiplas interfaces, cada qual provendo os mecanismos para permitir os

elementos trabalharem com outros elementos em cada uma das visões à qual pertence.

Um elemento, sendo uma parte em um estilo, pode ele próprio ser composto de

elementos arranjados em outro estilo. Por exemplo, um servidor em um sistema cliente-

servidor pode (transparente para outros servidores ou para seus próprios clientes) ser

implementado usando um estilo duto-e-filtro. A documentação para este sistema incluiria uma

visão cliente-servidor mostrando o sistema global, assim como uma visão duto-e-filtro

documentando esse servidor.

A escolha de estilos depende apenas dos usos para os quais o grupo de stakeholders

pretende incluir na documentação. Por exemplo, se o estilo dados-compartilhados oferecer

todas as ferramentas de análise necessárias, ele deve ser escolhido ao invés das outras duas

opções. Se for necessária uma perspectiva propiciada por mais de um estilo é possível

documentar as visões correspondentes separadamente, ou combiná-las em uma única visão

que é, grosso modo, a união daquilo que as visões separadas seriam.

Todos os três casos evidenciam a necessidade de documentar diferentes partes de um

sistema usando diferentes visões. Isto é, uma visão não necessita mostrar o sistema inteiro.

Como uma regra, um elemento se apresenta apenas uma vez em uma visão de módulo,

enquanto um componente correspondente pode ocorrer muitas vezes em uma visão C&C.

Alguns estilos são aplicáveis a qualquer sistema de software, ex.: decomposição, usos,

implantação, e atribuição de trabalho, por exemplo; mas outros estilos ocorrem apenas em

sistemas nos quais eles foram explicitamente escolhidos e projetados pelo arquiteto: camadas,

comunicação-processos, cliente-servidor, etc.

Em relação à UML, pode-se dizer que essa linguagem oferece notações gráficas para

quase tudo; mas resta-lhe, ainda, prover um conjunto de ferramentas para análise, verificação

de consistência, ou outro meios de conectar, automaticamente, a informação em nível

arquitetural expressa em UML com o código do sistema.

Page 54: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

53

4 – Linguagens de Descrição de Arquiteturas

4.1 Introdução As Linguagens de Descrição de Arquiteturas (ADLs – Architecture Description

Languages) têm suas raízes nas Linguagens de Interconexão de Módulos (MILs – Module

Interconnecting Languages), em cuja proposta original (DEREMER; KRON, 1975) os

autores distinguem a atividade de escrever pequenos programas da atividade de escrever

grandes programas, considerando os grandes programas como sistemas consistindo de muitos

programas pequenos (módulos), possivelmente escritos por diferentes pessoas.

DeRemer e Kron (1975) argumentam que a estruturação de uma vasta coleção de

módulos para formar um “sistema” é uma atividade intelectual essencialmente distinta da

atividade de construção de módulos individuais (uma questão de caráter cognitivo): os autores

distinguem a atividade de “programming-in-the-large” da atividade de “programming-in-the-

small”, sustentando, por conseguinte, que linguagens essencialmente distintas devem ser

usadas para essas duas atividades: uma MIL é adequada para a descrição da estrutura do

sistema, necessária para apoiar a atividade de programming-in-the-large.

Inicialmente, as arquiteturas eram amplamente representadas por desenhos na forma

de círculos-e-linhas nos quais a natureza dos componentes, suas propriedades, a semântica das

conexões e o comportamento do sistema eram vagamente definidos. Tais figuras, usualmente,

falham quando tentam responder questões como as levantadas em (CLEMENTS, 1996):

• Quais são os componentes? Eles são módulos que existem apenas em tempo de design?

Eles são tarefas ou processos em thread a partir de diferentes módulos, montados em

tempo de compilação, e formam unidades em tempo de execução? O que os componentes

fazem? Como eles se comportam?

• O que significam as conexões? Elas significam “enviar dados para”, “enviar controle

para”, “chamadas”, “é uma parte de”, alguma combinação disso, ou alguma outra coisa?

Quais são os mecanismos usados para preencher estes relacionamentos?

O restante deste capítulo encontra-se organizado como segue. Na Seção 4.2 estão

listadas as principais ADLs encontradas na literatura. Na Seção 4.3 são introduzidos os

conceitos relevantes acerca de ADLs. Na Seção 4.4 são listadas e explicadas as características

de ADLs apresentadas pelos principais pesquisadores da área. Na Seção 4.5 apresenta-se o

clássico framework conceitual sobre ADLs proposto por Medvidovic e Taylor (2000). Na

Seção 4.6 são apresentas algumas considerações relacionadas ao conteúdo deste capítulo.

Page 55: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

54

4.2 Principais ADLs Várias ADLs foram propostas, tanto dentro de um domínio particular quanto

linguagens de modelagem de arquitetura de propósito geral. Em um trabalho bastante

elucidativo, que irradia luz sobre a área de ADLs, os autores tratam das seguintes linguagens

comumente referenciadas como ADLs (MEDVIDOVIC; TAYLOR, 2000):

• Aesop: explora propriedades de estilos (GARLAN; ALLEN, OCKERBLOON, 1994);

• ArTek: (TERRY et al., 1995);

• C27: explora o poder de um dado estilo baseado em eventos (MEDVIDOVIC et al., 1996);

• Darwin: design e especificação de sistemas distribuídos dinâmicos (MAGEE et al., 1995);

• LILEANNA: linguagem parametrizada (TRACZ, 1993);

• MetaH: controle de aviação em tempo real (BLINN; VESTAL, 1993);

• Rapide: simulação e análise de comportamento dinâmico (LUCKHAM et al., 1995);

• SADL: refinamento de arquiteturas (MORICONI; QIAN; RIEMENSCHNEIDER, 1995);

• UniCon: conjunto de conectores e estilos, e compilação para código (SHAW et al., 1995);

• Weaves: explora a análise (GORLICK; RAZOUCK, 1991); e

• Wright: explora a interação de componentes (ALLEN; GARLAN, 1997).

Além das ADLs listadas acima, há a ACME (GARLAN; MONROE; WILE, 1997), que,

apesar de não ser considerada estritamente como uma ADL (MEDVIDOVIC; TAYLOR,

2000), ela contém várias características do tipo ADL. É uma linguagem de intercâmbio de

arquiteturas cuja intenção é dar suporte ao mapeamento de especificações arquiteturais entre

diferentes ADLs e, conseqüentemente, possibilitar a integração de ferramentas de suporte por

intermédio de ADLs. A ACME foi projetada para considerar os conceitos essenciais comuns a

diferentes ADLs e permitir extensões para incluir outros elementos.

Os resultados de uma comparação realizada por Medvidovic e Taylor (2000)

encontram-se sintetizados em tabelas no Anexo 1 deste texto, enquanto que os resultados

alcançados pelo survey de Clements (1996) estão disponibilizadas no Anexo 2.

4.3 Conceito Com o objetivo de apoiar o desenvolvimento baseado em arquitetura, são necessárias

notações de modelagem formal e análise formal, e ferramentas de desenvolvimento que

operem sobre as especificações arquiteturais. Como resposta a esta necessidade, foram

propostas as ADLs e os conjuntos de ferramentas que as acompanham.

7 O nome completo da ADL C2 é “C2SADEL”. Para distingui-la da SADL, a qual resultou de um projeto não relacionado, a C2SADEL é comumente referenciada na literatura simplesmente como “C2”.

Page 56: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

55

Vestal (1993) define, informalmente, que “uma ADL para aplicações de software

concentra-se na estrutura de alto nível da aplicação global ao invés de os detalhes de

implementação de algum módulo fonte específico”. Nas palavras de Clements (1996), no

entanto, “as linguagens de descrição de arquitetura são linguagens formais que podem ser

usadas para representar a arquitetura de um sistema de software”.

As ADLs provêem uma sintaxe concreta e um framework conceitual para a

caracterização de arquiteturas (GARLAN; MONROE; WILE, 1997). O framework conceitual

tipicamente reflete as características do domínio para o qual a ADL foi planejada e/ou o estilo

arquitetural. O framework tipicamente inclui a teoria semântica subjacente da ADL – ex.: CSP

(HOARE, 1978), Redes de Petri, máquinas de estado finito.

Medvidovic e Taylor (2000) culminam com uma definição concisa sobre ADL, a qual

é adotada como a definição padrão no âmbito deste presente trabalho:

“Uma ADL deve explicitamente modelar componentes, conectores, e suas

configurações; além disso, para ser verdadeiramente usável e útil, ela deve prover

uma ferramenta de suporte ao desenvolvimento baseado em arquitetura e suporte à

evolução.”

4.4 Características de ADLs

DeRemer e Kron (1975) concluem sua proposta fazendo as seguintes alegações,

relacionadas a uma MIL: (i) incorpora uma metodologia para software reusável8; (ii) provê

muitas formas necessárias de abstração, expressão, e verificação, frente à atividade de

programming-in-the-large; (iii) melhora os efeitos de confiabilidade que são ganhos por

outros métodos: estilos de gerenciamento (top-down, modular, e programação estruturada),

abstração de dados, e ocultação de informação; e (iv) a confiabilidade é aprimorada durante o

design do sistema, a fase de programação real, teste, manutenção e modificação do sistema.

Em um trabalho fundamental sobre as ADLs, Shaw et al. (1995) listam as

propriedades essenciais que as ADLs devem exibir:

• capacidade para representar componentes (primitivos ou compostos) paralelamente às

declarações de propriedades, interfaces e implementações;

• capacidade para representar conectores, paralelamente com protocolos, declarações de

propriedades, e implementações;

• abstração e encapsulamento;

8 Os autores já anteviam o Desenvolvimento de Software Baseando em Componentes.

Page 57: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

56

• tipos e verificação de tipos;

• capacidade para acomodar ferramentas de análise de forma aberta.

Por sua vez, Luckham e Vera (1995) listam os seguintes requisitos para uma ADL:

• abstração de componentes;

• abstração de comunicação;

• integridade de comunicação (limitando a comunicação àqueles componentes

arquiteturalmente conectados um ao outro);

• habilidade para modelar arquiteturas dinâmicas;

• habilidade para raciocinar sobre causalidade e tempo;

• relatividade, o mapeamento de comportamentos (possivelmente diferentes) a arquiteturas,

como um primeiro passo rumo à verificação da consistência.

Após realizar um levantamento sobre uma ampla seleção de linguagens, Clements

(1996) concluiu seu trabalho com uma lista de requisitos para que uma linguagem possa ser

considerada uma ADL, quais sejam:

• dar suporte às tarefas de criação, refinamento, e validação de arquitetura; incorporar

regras sobre o que constitui uma arquitetura completa ou consistente.

• prover a capacidade de representar a maioria dos estilos arquiteturais comuns enumerados

em (GARLAN; SHAW, 1993).

• ter a capacidade de prover visões do sistema que expressam informações arquiteturais,

mas ao mesmo tempo suprimir informações não arquiteturais.

• se for possível expressar informações em nível de implementação, então deve dar suporte

à especificação de famílias de implementação que satisfazem uma arquitetura comum.

• dar suporte à capacidade analítica, baseada em informação de nível arquitetural, ou dar

suporte à capacidade para geração rápida de implementações de protótipos.

Diversos pesquisadores tentaram esclarecer essas questões, seja por meio de um

levantamento daquilo que eles consideraram como sendo as ADLs existentes (CLEMENTS,

1996) (KOGUT; CLEMENTS, 1994) (VESTAL, 1993), ou pela listagem dos requisitos

essenciais para uma ADL (LUCKHAM; VERA, 1995) (SHAW et al., 1995) (SHAW;

GARLAN, 1994) (SHAW; GARLAN, 1995) e (MEDVIDOVIC; ROSENBLUM, 1997).

4.5 Um Framework Conceitual para ADLs Medvidovic e Taylor (2000) realizaram um estudo sobre os conjuntos de

características e requisitos de uma ADL, e usaram os resultados desse estudo como um guia

Page 58: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

57

na formulação do seu framework para classificação e comparação de ADLs. Os autores

estudaram as características de ADLs individuais, dando origem a uma proposta de taxonomia

que reflete as características da maioria das ADLs até então existentes. Conforme o

framework representado na Quadro 4.1, os blocos de construção de uma descrição arquitetural

são os seguintes: (1) componentes, (2) conectores, e (3) configurações arquiteturais.9 Uma

ADL deve prover os meios para sua especificação, explicitamente; isto possibilita decidir se

uma determinada notação pode ser de fato considerada uma ADL.

Quadro 4.1 – Framework10 de classificação e comparação de ADLs – Fonte: (Medvidovic; Taylor, 2000)

ADL Características de Modelagem de Arquitetura Componentes

Interface

Tipos Semântica Restrições Evolução Propriedades Não-funcionais Conectores

Interface Tipos Semântica Restrições Evolução Propriedades Não-funcionais Configurações Arquiteturais

Capacidade de Compreensão Capacidade de Composição Refinamento e Rastreamento Heterogeneidade Escalabilidade Evolução Dinamismo Restrições Propriedades Não-funcionais Ferramentas de Suporte Especificação Ativa Múltiplas Visões Análise Refinamento Geração de Implementação Dinamismo

Medvidovic e Taylor (2000) afirmam que, a fim de inferir informações sobre uma

arquitetura, no mínimo, as interfaces dos componentes constituintes devem ser modeladas.

Sem esta informação, uma descrição arquitetural torna-se, similar a um diagrama de “caixas e

linhas” sem semântica subjacente explícita. Vários outros aspectos de componentes,

conectores e configurações são desejáveis, mas não essenciais: seus benefícios têm sido

reconhecidos e demonstrados no contexto do domínio de um problema ou de um estilo, mas

sua ausência não significa que uma dada linguagem não seja uma ADL.

9 “Configurações arquiteturais” poderão ser referidas simplesmente como “configurações” ou “topologias”. 10 As características de modelagem essenciais estão em negrito.

Page 59: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

58

Um conjunto de ferramentas torna uma ADL mais usável e útil, ainda que a

adequação de uma dada linguagem para a modelagem de arquiteturas de software seja

independente de quais tipos de ferramenta de suporte ela provê.

4.5.1 Modelagem dos Componentes

Um componente em uma arquitetura é, por excelência, uma unidade de computação ou

um armazém de dados e, conseqüentemente, os componentes são “o local da computação e do

estado” (SHAW et al., 1995). Os componentes podem ser tão pequenos quanto um único

procedimento ou tão grandes quanto uma aplicação inteira. Cada componente pode requerer

seus próprios dados ou espaço de execução, ou pode compartilhá-los com outros

componentes. As interfaces explícitas de componentes são características necessárias das

ADLs. Para fins de comparação, as características adicionais são (MEDVIDOVIC; TAYLOR,

2000): tipos, semântica, restrições, evolução, e propriedades não-funcionais.

• Interface: É um conjunto de pontos de interação entre um componente e o mundo

externo. A interface especifica os serviços (mensagens, operações, e variáveis) que um

componente provê. Para apoiar o raciocínio sobre um componente e a arquitetura, podem

ser fornecidos recursos para a especificação das necessidades dos componentes (serviços

requeridos de outros componentes na arquitetura). Portanto, uma interface define os

compromissos computacionais que um componente pode fazer e restrições sobre seu uso.

• Tipos: São abstrações que encapsulam as funcionalidades em blocos reusáveis. Um tipo

de componente pode ser instanciado múltiplas vezes em uma única arquitetura ou pode ser

parametrizado e reusado em várias arquiteturas.

• Semântica: É definida como um modelo de alto nível do comportamento do componente.

Tal modelo é necessário para executar análise, impor restrições arquiteturais, e garantir

mapeamentos consistentes de arquiteturas de um nível de abstração para outro.

• Restrições: Devem ser especificadas restrições sobre os componentes a fim de: garantir a

fidelidade aos usos pretendidos; forçar os limites de uso; e estabelecer dependências entre

as partes internas de um componente.

• Evolução: Pode ser informalmente definida como a modificação de suas propriedades,

ex.: interface, comportamento, ou implementação. As ADLs podem garantir que a

evolução ocorra de um modo sistemático, empregando a sub-tipificação (hierarquização)

de tipos e refinamento de características de componentes.

• Propriedades Não Funcionais: É necessária a especificação preliminar de propriedades

no nível arquitetural, tais como confiabilidade, segurança, desempenho, e portabilidade, a

Page 60: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

59

fim de: habilitar a simulação do comportamento em tempo de execução, executar a

análise, impor as restrições, mapear as implementações de componentes aos

processadores, e auxiliar o gerenciamento de projeto.

4.5.2 Modelagem dos Conectores

Os conectores são blocos de construção arquiteturais, que ensejam a modelagem das

interações entre componentes e a modelagem das regras que governam essas interações. Os

conectores podem não corresponder às unidades de compilação em um sistema

implementado: podem ser implementados como dispositivos de roteamento de mensagens

compiláveis separadamente, mas podem também manifestarem-se como: variáveis

compartilhadas, entradas em tabelas, estruturas de dados dinâmicas, seqüências de chamadas

de procedimentos embutidos no código, parâmetros de inicialização, protocolos cliente-

servidor, pipes, links SQL entre uma base de dados e uma aplicação, e assim por diante

(GARLAN; MONROE; WILE, 1997) (SHAW et al., 1995). Conforme (MEDVIDOVIC;

TAYLOR, 2000), os conectores são caracterizados por: interfaces, tipos, semântica,

restrições, evolução, e propriedades não funcionais11:

• Interface: É um conjunto de pontos de interação entre o conector e os componentes e

outros conectores vinculados a ele. As interfaces possibilitam a conectividade adequada

de componentes e suas interações em uma arquitetura e, por meio disso, o raciocínio sobre

as configurações arquiteturais.

• Tipos: São abstrações que encapsulam a comunicação, coordenação, e decisões de

mediação de componentes (interações em nível arquitetural podem ser caracterizadas por

protocolos complexos). Tornar esses protocolos reusáveis requer que as ADLs modelem

conectores como tipos: na forma de um sistema de tipos extensível, definido em termos de

protocolos de interação, ou como tipos enumerados built-in, baseados em mecanismos de

implementação particulares.

• Semântica: É definida como um modelo de alto nível do comportamento de um conector,

e acarreta especificações de protocolos de interação (independentes da computação). As

ADLs podem dar suporte à modelagem da semântica de conectores a fim de possibilitar: a

análise da interação de componentes; o refinamento consistente de arquiteturas através dos

níveis de abstração; e a imposição de restrições de interconexão e de comunicação.

11 Apesar de as categorias de comparação para componentes e conectores serem idênticas, segundo Medvidovic e Taylor (2000), elas foram derivadas e refinadas independentemente umas das outras.

Page 61: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

60

• Restrições: Garantem a fidelidade aos protocolos de interação planejados, estabelecem

dependências intra-conectores, e impõem limites de uso. Ex.: a restrição do número de

componentes que interagem por meio do conector.

• Evolução: É definida como a modificação de suas propriedades, ex.: interface, semântica,

ou restrições sobre ambos. As ADLs podem acomodar essa evolução por meio da

modificação ou refinamento de conectores usando técnicas tais como filtragem de

informações incrementais, subtipificação, e refinamento.

• Propriedades Não Funcionais: Representam requisitos (adicionais) para a correta

implementação do conector. Ex.: simulação de comportamento dinâmico; análise de

conectores; imposição de restrições; e seleção de conectores off-the-shelf12 (OTS)

adequados (ex.: barramento de mensagens) e seus mapeamentos a processadores.

4.5.3 Modelagem das Configurações Arquiteturais

As configurações arquiteturais, ou topologias, são grafos conectados de componentes

e conectores que descrevem a estrutura arquitetural. Esta informação é necessária para

determinar se os componentes adequados estão conectados, se suas interfaces são

equivalentes, se os conectores possibilitam comunicação adequada, e se suas semânticas

combinadas resultam em comportamento desejado (MEDVIDOVIC; TAYLOR, 2000).

Os aspectos característicos no nível de configurações arquiteturais caem em três

categorias genéricas (MEDVIDOVIC; TAYLOR, 2000): (1) qualidades da descrição da

configuração: capacidade de compreensão, composição, refinamento e rastreabilidade, e

heterogeneidade; (2) qualidades do sistema descrito: heterogeneidade, escalabilidade,

capacidade de evolução, e dinamismo; (3) propriedades do sistema descrito: dinamismo,

restrições, e propriedades não funcionais.13

Vê-se que as três categorias não são completamente ortogonais: heterogeneidade e

dinamismo aparecem em duas categorias. Heterogeneidade pode ser manifestada nos vários

formalismos empregados nas descrições de configuração, e em múltiplas LPs. As

características das configurações são (MEDVIDOVIC; TAYLOR, 2000):

• Especificações Compreensíveis: As ADLs devem modelar a informação estrutural

(topológica) com sintaxe simples e compreensível, pois um dos papéis da arquitetura é

servir como um canal de comunicação preliminar para diferentes stakeholders em um

projeto e facilitar o entendimento de sistemas (ou famílias) em um alto nível de abstração. 12 Previamente desenvolvido, sem ter sido necessariamente encomendado. 13 O termo “qualidade” é usado de maneira convencional, independente da aplicação. O termo “propriedade” refere-se às características de uma aplicação introduzidas para tratar requisitos específicos.

Page 62: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

61

• Composição Hierárquica: Mecanismo que permite às ADLs descreverem softwares em

diferentes níveis de detalhes. Há situações nas quais uma arquitetura torna-se um único

componente de uma arquitetura em um nível de abstração superior.

• Refinamento e Rastreabilidade: As ADLs também podem possibilitar o refinamento

consistente e correto de arquiteturas em sistemas executáveis e permitir a rastreabilidade

de alterações ao longo de diferentes níveis de refinamento arquitetural.

• Heterogeneidade: É salutar que as ADLs sejam extensíveis, isto é, que forneçam recursos

para a especificação e desenvolvimento arquitetural, preferencialmente, com componentes

e conectores pré-existentes de granularidade variada, possivelmente especificados em

diferentes linguagens de modelagem formal e implementados em diferentes LPs.

• Escalabilidade: As ADLs podem apoiar diretamente a especificação e o desenvolvimento

de sistemas de grande porte que são plausíveis de crescimento no futuro, por meio de

recursos que possibilitem expressar as abstrações necessárias para lidar com as questões

de complexidade e de tamanho de software.

• Capacidade de Evolução: As ADLs necessitam aumentar o suporte à evolução no nível

de componentes e conectores com recursos para sua adição incremental, remoção,

substituição, e re-conexão em uma configuração. A evolução refere-se às alterações

estáticas (em tempo de desenvolvimento) em uma arquitetura (e ao sistema resultante).

• Dinamismo: O dinamismo refere-se à modificação da arquitetura e realização destas

modificações enquanto o sistema está sendo executado. O suporte ao dinamismo é

importante em sistemas de missão crítica que requerem alto grau de confiabilidade, tais

como controle de tráfego aéreo, comutação de telefone, sistemas de informação pública de

alta disponibilidade (OREISY; MEDVIDOVIC; TAYLOR, 1998). Para tanto, as ADLs

necessitam prover características específicas para modelagem de alterações dinâmicas e

técnicas para sua efetivação no sistema em tempo de execução.

• Restrições: As restrições que representam dependências em uma configuração

complementam as restrições específicas a componentes e conectores individuais. Muitas

restrições globais são derivadas, ou dependem diretamente, de restrições locais. Ex.: as

restrições sobre as configurações válidas podem ser expressas como restrições de

interações entre componentes e conectores constituintes.

• Propriedades Não Funcionais: São necessárias em nível de configuração para selecionar

os componentes e conectores adequados, executar análise, impor restrições, mapear blocos

de construção arquiteturais para processadores, e auxiliar no gerenciamento de projetos.

Page 63: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

62

4.5.4 Ferramentas de Suporte para Descrição Arquitetural

A motivação para o desenvolvimento de linguagens formais para descrição

arquitetural é que o seu formalismo lhes confere adequação para o raciocínio e manipulação

por meio de ferramentas de software. Um conjunto de ferramentas de suporte que acompanha

uma ADL não é, estritamente falando, parte da linguagem. Entretanto, a utilidade de uma

ADL está diretamente relacionada aos tipos de ferramentas que ela provê para dar suporte ao

design arquitetural, à análise, à evolução, e à geração de sistemas executáveis.

Os pesquisadores na área de ADLs vêm tentando identificar os elementos que

compreendem um toolkit canônico (conjunto de ferramentas). Diversas categorias genéricas

que têm emergido refletem os tipos de ferramentas de suporte, comumente, fornecidas pelas

abordagens arquiteturais existentes: especificação ativa, múltiplas visões, análise,

refinamento, geração da implementação, e dinamismo (MEDVIDOVIC; TAYLOR, 2000).

• Especificação Ativa: Fornecer suporte à especificação por meio da redução das possíveis

opções de design baseadas no estado atual da arquitetura. Podem ser pró-ativas, sugerindo

cursos de ação ou proibindo opções de design que podem resultar em estados de design

indesejados, ou reativas, informando o arquiteto quando tais estados são atingidos durante

o design. Elas podem dar seus feedbacks de modo intrusivo, forçando o arquiteto a tomar

conhecimento antes de continuar, ou não intrusivo, permitindo ao arquiteto visualizar o

feedback conforme sua conveniência.

• Múltiplas Visões: Fornecer a visão mais apropriada para um determinado stakeholder e

garantir a consistência inter-visões são as questões chave. Os clientes podem ficar

satisfeitos com uma apresentação gráfica, enquanto os desenvolvedores podem desejar

especificações mais formais de componentes e conectores, ao passo que os gerentes

podem requerer uma visão do processo de desenvolvimento do sistema correspondente.

• Análise: A capacidade de avaliar as propriedades de sistemas grandes, distribuídos, e

concorrentes, em um nível arquitetural, pode diminuir substancialmente o custo dos erros.

• Refinamento: A redefinição de descrições arquiteturais é uma tarefa complexa cuja

corretude e consistência não podem ser sempre garantidas por meio de provas formais,

mas as ferramentas de suporte adequadas podem aumentar a confiabilidade a este respeito

(MORICONI; QIAN; RIEMENSCHNEIDER, 1995).

• Geração da Implementação: A meta suprema de qualquer empreendimento de design e

modelagem de software é produzir o sistema executável. A realização manual dessa

atividade pode resultar em muitos problemas de consistência e rastreabilidade entre uma

Page 64: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

63

arquitetura e sua implementação. Portanto é desejável, senão imperativo, a um conjunto de

ferramentas de ADL prover ferramentas para assistir a produção do código fonte.

• Dinamismo: Medvidovic e Taylor (2000) têm argumentado sobre a necessidade de

modelar alterações dinâmicas no nível arquitetural. As ferramentas de software são

necessárias para: analisar a arquitetura modificada e garantir suas propriedades desejáveis;

mapear corretamente as alterações expressas em termos de construtores arquiteturais para

os módulos de implementação; garantir a execução contínua dos subsistemas vitais da

aplicação e a preservação de estado durante a modificação; a análise e teste da aplicação

modificada enquanto ela está sendo executada.

4.6 Considerações Uma ADL é, por excelência, uma linguagem de alto nível que enseja, no contexto do

sistema de software, a modelagem de componentes e conectores, assim como suas

configurações. As ADLs têm sido reconhecidas como uma importante ferramenta para dar

suporte ao raciocínio sistemático sobre componentes de sistemas e as conexões entre eles no

princípio do processo de desenvolvimento.

As ADLs resultam de uma abordagem lingüística à representação formal de

arquiteturas e tratam as deficiências das representações informais. Além disso, há ADLs que

permitem análises e testes antecipados sobre a exeqüibilidade das decisões de design.

A principal contribuição do trabalho proposto por Medvidovic e Taylor (2000) é

justamente um framework de definição e classificação. A definição fornece um teste simples

para ADLs, o qual reflete o consenso da comunidade sobre o que é essencial na modelagem

de uma arquitetura: uma descrição arquitetural difere de outras notações pelo seu foco

explícito sobre componentes, conectores e configurações arquiteturais.

A comparação de ADLs, realizada por Medvidovic e Taylor (2000), destacou várias

áreas onde elas fornecem extensivo suporte, em termos de capacidades de modelagem de

arquitetura e ferramenta de suporte. Conforme mostram as tabelas contidas no Anexo 1, várias

linguagens usam notações formais capazes de modelar a semântica de componentes e

conectores. Elas também fornecem uma ampla gama de ferramentas de visualização e análise

de arquiteturas. O levantamento de Medvidovic e Taylor (2000)apontou áreas seriamente

carentes de ADLs. Poucas apóiam a especificação de propriedades não funcionais, ainda que

tais propriedades possam ser essenciais à implementação e ao gerenciamento do processo de

desenvolvimento. O refinamento arquitetural e a especificação de restrições também

permanecem inexplorados.

Page 65: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

64

Na literatura há controvérsias no que concerne ao nível de suporte que uma ADL deve

prover aos desenvolvedores. Alguns pesquisadores sustentam que o papel primário das

descrições arquiteturais é auxiliar a compreensão e a comunicação sobre o sistema de

software. Como tal, uma ADL deve ter uma sintaxe simples, compreensível, e possivelmente

gráfica, uma semântica bem entendida, mas não necessariamente definida formalmente, e os

tipos de ferramentas que auxiliam a visualização, a compreensão e a análise simples das

descrições arquiteturais, ex.: a Argo (ROBBINS; REDMILES; ROSENBLUM, 1997).

Em uma posição extremamente oposta, a tendência tem sido prover a sintaxe e a

semântica formal de ADLs, poderosas ferramentas de análise, verificadores de modelos,

analisadores sintáticos, compiladores, ferramentas de síntese de código, ferramentas de

suporte em tempo de execução, etc., ex.: padrões de refinamento de arquitetura da SADL

(MORICONI; QIAN; RIEMENSCHNEIDER, 1995), uso do π-Calculus para formalizar a

semântica arquitetural da Darwin (MAGEE; KRAMER, 1996), ou o analisador sintático e o

compilador da UniCon (SHAW et al., 1995). Ambas as perspectivas têm o seu mérito, o que

faz com que os pesquisadores geralmente adotem uma ou outra visão extrema.

As categorias identificadas no framework proposto em (MEDVIDOVIC; TAYLOR,

2000) são ortogonais ao escopo de aplicabilidade de uma ADL. Como um modelo de sistema

em um alto nível de abstração, uma ADL é planejada para prover uma representação parcial

do sistema. Os tipos de informações focalizados por uma ADL podem ser as características de

um domínio de aplicação, um estilo arquitetural, ou um conjunto específico de propriedades

(ex.: distribuição, concorrência e segurança).

Em combinação com modelos de componentes e conectores, as descrições de

configurações possibilitam a avaliação de aspectos concorrentes e distribuídos de uma

arquitetura (ex.: possíveis impasses, desempenho, confiabilidade e segurança). As descrições

de configurações também possibilitam a análise da arquitetura em relação à fidelidade às

heurísticas de design (ex.: links de comunicação direta entre componentes dificultam a

capacidade de evolução de uma arquitetura), e restrições de estilos arquiteturais (ex.: links de

comunicação direta entre componentes são proibidos).

O dinamismo antecipado é uma propriedade na qual o sistema pode ser arquitetado

especificamente para acomodar a alteração dinâmica (esperada); o dinamismo não-antecipado

é a qualidade que se refere à adequabilidade genérica do sistema para alteração dinâmica.

As ferramentas de design arquitetural de especificação ativa orientam o design e

podem reduzir significativamente a carga cognitiva exigida do arquiteto de software.

Page 66: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

65

5 – Desenvolvimento de Software Orientado a Aspectos

5.1 Introdução

Não obstante o paradigma orientado a objetos tenha se consolidado como o estado da

arte para o desenvolvimento de sistemas de software, suas abstrações e mecanismos de

composição possuem limitações para separar e compor alguns interesses relevantes em um

sistema de software. Conseqüentemente, muitos interesses importantes espalham-se por vários

módulos e misturam-se com outros interesses de um sistema de maneira intrusiva,

dificultando a reutilização e manutenção de seus componentes. Alguns exemplos clássicos

destes interesses são: realização de log (logging), tratamento de erros, controle de

concorrência, segurança e persistência (GARCIA et al., 2004).

O Desenvolvimento de Software Orientado a Aspectos (DSOA) é um paradigma de

desenvolvimento fundamentado nos conceitos da Programação Orientada a Aspectos (POA).

A POA propõe um tipo de abstração – denominado aspecto – e mecanismos de composição

que permitem a descrição modular e a composição de interesses que, geralmente, encontram-

se espalhados e misturados – a saber, os interesses transversais – em vários pontos de um

sistema de software orientado a objeto.

O DSOA relaciona-se com campos tradicionais e emergentes da Engenharia de

Software, tornando-se, conseqüentemente, um tema de real interesse para pesquisadores de

outras áreas, tais como engenharia de requisitos, métodos formais, engenharia de software

baseada em componentes, manutenção e reutilização de software, teste de software e

engenharia de software empírica (GARCIA et al., 2004).

Uma descrição bastante abrangente das tecnologias do DSOA pode ser encontrada em

(AOSD, 2007). O restante deste capítulo encontra-se organizado como segue. Na Seção 5.2

faz-se uma breve introdução sobre a Programação Orientada a Aspectos. Na Seção 5.3 são

apresentadas as principais abordagens arquiteturais orientadas a aspectos. Na Seção 5.4 é

mostrada uma análise das principais abordagens de aspectos preliminares. Na Seção 5.5 são

apresentadas algumas das principais ADLs Orientadas a Aspectos. As conclusões referentes a

este capítulo estão expostas na Seção 5.6.

5.2 Programação Orientada a Aspectos

Pelo fato de o modelo de objetos subjacente prover uma melhor adequação aos

problemas do mundo real, a Programação Orientada a Objetos (POO) tem sido utilizada como

uma tecnologia que realmente auxilia a engenharia de software. Porém, segundo Kiczales et

Page 67: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

66

al. (1997), são encontrados muitos problemas de programação onde as técnicas de POO não

são suficientes para capturar com clareza todas as decisões importantes de design que o

programa deve implementar. Há alguns problemas de programação que não se encaixam na

abordagem POO nem na abordagem procedimental que ela intentou substituiu.

Kiczales et al. (1997) apresentam a seguinte argumentação:

“quando uma linguagem de programação provê abstração e mecanismos de

composição que dão suporte, de forma clara, aos tipos de unidades do sistema que um

processo de design quebra, é possível dizer que o processo de design e a linguagem de

programação, juntos, trabalham de modo eficiente”.

A noção de aspecto – do latim aspectu – é multímoda. Apresenta-se prima face, como

um problema vocabular e conceitual. Pode ser estudada como um termo (expressão), um

conceito ou uma entidade. Assim, tem-se a definição semântica de aspecto e uma definição

concreta de aspecto. Mas, entendido como algo concreto, exige distinguir a espécie de

realidade: entidade, relacionamento ou propriedade de uma entidade.

Os aspectos foram introduzidos por (KICZALES et al., 1997) e são definidos como as

propriedades do sistema que tendem a entrecortar (cortar transversalmente) componentes

funcionais, resultando em sistemas mais acoplados (código entrelaçado). As tecnologias do

DSOA modelam componentes e aspectos como duas entidades separadas onde os aspectos

estão automaticamente combinados no comportamento funcional do sistema a fim de produzir

o sistema global.

Dois termos importantes devem ser definidos com mais precisão a respeito de um

sistema e de sua implementação usando-se uma linguagem PG; uma propriedade que deve ser

implementada pode ser (KICZALES et al., 1997):

“Um componente, se ela pode ser encapsulada de modo claro14

em um

procedimento generalizado (i.e. objeto, método, procedimento, API). Por

claro, nós queremos dizer bem localizado, e facilmente acessado e composto

quando necessário. Os componentes tendem a ser unidades da decomposição

funcional do sistema, tais como filtros de imagem, contas bancárias e widgets

de GUI.”

ou

14 Legível, organizado.

Page 68: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

67

“Um aspecto, se ela não pode ser encapsulada de modo claro em um

procedimento generalizado. Os aspectos tendem a não ser unidades da

decomposição funcional do sistema, mas serem propriedades que afetam o

desempenho ou semântica dos componentes de modo sistemático. Exemplos de

aspectos incluem padrões de acesso à memória e sincronização de objetos

concorrentes.”

Kiczales et al. (1997) exprimem, claramente, a meta da POA nos seguintes termos:

“Oferecer suporte ao programador para a separação clara de componentes e

aspectos,15

fornecendo mecanismos que possibilitam abstraí-los e compô-los

para se produzir o sistema global”.

Para exemplificar como os aspectos cortam transversalmente os componentes, é

apresentada a Tabela 5.1, na qual se encontram exemplos de aspectos e componentes. Para

cada exemplo são listados: uma aplicação; um tipo de linguagem que faria um bom trabalho

na captura da estrutura de componentes da aplicação; uma estrutura plausível de componentes

para a aplicação, se programada usando-se esse tipo de linguagem; e os aspectos que

cortariam transversalmente essa estrutura de componente.

Tabela 5.1 - Exemplos de aspectos e componentes – Fonte: Adaptado de (KICZALES et al., 1997)

Aplicação Linguagem Componentes Aspectos Processamento de imagem

Procedimental Filtros Fusão de laços, Compartilhamento de resultados, Alocação de memória em tempo de compilação.

Biblioteca digital

Orientada a objetos

Repositórios, Impressoras, Serviços.

Minimização de tráfego de rede, Restrições de sincronização, Manipulação de falhas.

Algoritmos de matrizes

Procedimental Operações de álgebra linear.

Representação de matrizes, Permutação, Erro de ponto flutuante.

Kiczales et al. (1997) sustentam que alguns aspectos são tão comuns que podem ser

facilmente imaginados sem uma referência a um domínio em particular, citando como

exemplo a manipulação de erros e falhas. Esses mesmos autores seguem defendendo que

muitas das questões relacionadas ao desempenho são aspectos, porque a otimização de

desempenho, muitas vezes, explora informações sobre o contexto de execução as quais se

encontram espalhadas pelos componentes.

15 Componentes entre si, aspectos entre si, e componente e aspectos.

Page 69: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

68

5.3 Abordagens de Arquitetura de Software Orientada a Aspectos

Uma vez que os métodos de design arquitetural atuais não distinguem, explicitamente,

os interesses arquiteturais convencionais dos interesses arquiteturais que entrecortam

múltiplos componentes arquiteturais, há o risco de que potenciais aspectos possam ser

facilmente negligenciados durante o design arquitetural e continuem não solucionados nas

etapas subseqüentes (design e programação).

Semelhantemente à noção de aspecto no nível de programação, estes interesses são

transversais e denotam os chamados aspectos arquiteturais. Uma vez que a propriedade

transversal de aspectos arquiteturais é inerente, ela não pode ser refeita através da redefinição

da arquitetura de software usando-se abstrações arquiteturais convencionais.

Conseqüentemente, é necessário explicitar mecanismos para identificar, especificar e avaliar

aspectos no nível de design arquitetural (CHITCHYAN et al., 2005).

Chitchyan et al. (2005) discutem o estado da arte das abordagens arquiteturais

orientadas a aspectos sob uma perspectiva de tratamento de interesses transversais no nível

arquitetural. As abordagens são categorizadas como segue:

1. Abordagens para modelagem de arquitetura – incluem as abordagens para modelagem de

arquitetura, visual e textualmente.

2. Abordagens para o processo de design arquitetural – incluem as abordagens que

proporcionam um processo explícito e regras heurísticas para o design de arquiteturas.

3. Abordagens para avaliação de arquitetura – incluem as abordagens que focam

principalmente na análise da arquitetura em relação aos critérios de qualidade requeridos.

5.3.1 Abordagens para Modelagem Arquitetural

Framework Perspectival Concern-Space (PCS)

O framework PCS (KANDE, 2003) é uma técnica para a descrição de interesses de

múltiplas dimensões em uma visão arquitetural consistindo de um ou mais modelos e

diagramas. Uma perspectiva é uma “forma de visualização”, em um espaço multidimensional,

de interesses de software sob um ponto de vista específico. O PCS usa o conceito de

combinação de realizações dos frameworks conceituais: Multi Dimension Separation of

Concerns – MDSoC – (OSSHER; TARR, 2000) e (TARR et al., 2005); padrão IEEE-1471

(IEEE, 2000); e da UML (BOOCH; RUMBAUGH; JACOBSON; 2005).

Dynamic Aspect-Oriented Platform ADL (DAOP-ADL)

Page 70: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

69

A DAOP-ADL (PINTO; FUENTES; TROYA, 2003) é uma linguagem de descrição

arquitetural, baseada em XML, para descrever a arquitetura de uma aplicação em termos de

um conjunto de componentes, um conjunto de aspectos e a interconexão entre eles. As

interconexões são estruturadas em dois tipos diferentes de restrições de composição:

1. regrasDeComposiçãoDeComponentes: descreve as regras para direcionar a composição

de componentes.

2. regrasDeAvaliaçãoDeAspectos: é o equivalente aos conjuntos de pontos de junção nas

LPs orientada a aspectos, e descreve as regras de combinação entre componentes e

aspectos.

O processo para o design de arquitetura baseado na DAOP-ADL é o seguinte: todos os

componentes e aspectos que podem ser instanciados em uma aplicação são descritos usando a

seção de descrição de componentes e aspectos da linguagem DAOP-ADL.

A ferramenta Component and Aspect Repository, usada para registrar aspectos e

componentes COTS, gera automaticamente a descrição de aspectos e componentes carregados

usando-se a sintaxe da linguagem DAOP-ADL. Na seqüência, é empregada a ferramenta

Aspect Specification and Validation, a qual possui a linguagem DAOP-ADL em seu back-end

e oferece suporte à descrição e validação da arquitetura de software da aplicação.

A DAOP-ADL é usada em conjunto com o CAM/DAOP. O CAM (Componet-Aspect

Model) é um modelo de design usado para projetar aplicações baseadas em componentes e

aspectos em UML. A DAOP, por outro lado, é uma plataforma baseada em componentes e

aspectos que carrega a descrição da arquitetura fornecida via especificação DAOP-ADL para

obter as informações necessárias à instanciação dos componentes e dos aspectos e para

executar a composição dinâmica de componentes em tempo de execução.

5.3.2 Abordagens para o Processo de Design Arquitetural

Aspect-Oriented Generative Approaches (AOGA)

Trata-se de uma abordagem centrada na arquitetura, inicialmente esboçada em

(GARCIA, 2001) e posteriormente estendida em (KULESZA; GARCIA; LUCENA, 2004-a),

com o propósito de dar suporte a desenvolvedores de sistemas multi-agentes (MAS - Multi

Agent Systems) com linguagens específicas de domínio, notações de modelagem, e

ferramentas de geração de código. A AOGA tem extensões definidas para modelos de

características (features) e uma nova linguagem específica de domínio Agent-DSL, além da

notação baseada na UML para expressar aspectos arquiteturais.

Page 71: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

70

Esta abordagem cobre as seguintes fases do ciclo de vida: Análise e Especificação de

Domínio, Design e Implementação da Arquitetura, conforme ilustrado na Figura 5.1.

Análise e Especificação do Domínio

Especificação de aspectos do domínio

Especificação de propriedades dos agentes

Modelos de Características Estendido Agent-DSL

Design da Arquitetura

Arquitetura Orientada Aspectos

Notação UML

Implementação Frameworks + Componentes

Templates de Código

Gerador de Código

Implementação

Classes e Aspectos da Aplicação

Arquitetura Agente OA Gerada

Figura 5.1 – Fases do desenvolvimento apoiadas na AOGA – Fonte: (KULESZA; GARCIA; LUCENA, 2004-a).

A AOGA tem uma linguagem baseada em UML para especificação e comunicação de

arquiteturas de software orientadas a aspectos (Figura 5.2). Conforme mostra a Figura 5.2,

cada componente arquitetural tem uma ou mais interfaces; diferentes componentes podem

conceber a mesma interface. As interfaces são anexadas aos componentes arquiteturais e são

categorizados em dois grupos: interfaces normais (NI) e interfaces transversais (CI)

(CHAVEZ et al., 2005).

Figura 5.2 – Aspectos arquiteturais em interfaces transversais. Fonte: (KULESZA; GARCIA; LUCENA, 2004a).

Uma interface normal apenas fornece serviços para outros componentes enquanto

que uma interface transversal em um modelo arquitetural especifica quais componentes

arquiteturais um componente aspectual afeta. Um componente aspectual está em

Page 72: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

71

conformidade com um conjunto de interfaces transversais. Uma interface de um aspecto

entrecorta os elementos internos de componentes arquiteturais ou entrecorta outras interfaces.

O primeiro caso significa que o aspecto arquitetural afeta, diretamente, a estrutura interna ou

o comportamento dinâmico do componente alvo. O segundo caso significa que o aspecto afeta

o comportamento definido pela interface transversal.

TranSAT

O TranSAT (BARAIS et al., 2004) é um framework para a especificação da evolução

do software que enfatiza a facilitação da evolução da arquitetura através dos princípios de

DSOA em um contexto arquitetural. Ele propõe a definição incremental da arquitetura do

software através da combinação (weaving) de um novo plano arquitetural dentro da

arquitetura de software. A especificação da arquitetura é transformada por meio da integração

de interesses dentro da arquitetura.

5.3.3 Abordagens para Avaliação Arquitetural

Aspectual Software Architecture Analysis Method (ASAAM)

O ASAAM (TEKINERDOGAN, 2004) tem como objetivo identificar e especificar,

explicitamente, aspectos arquiteturais nos estágios iniciais do ciclo de vida do software. Essa

abordagem, construída com base em métodos de análise arquitetural baseada em cenários

(KAZMAN et al., 1994), é considerada como uma abordagem complementar a tais métodos.

Os dois artefatos chave no ASAAM são cenários e componentes arquiteturais. Existem

três tipos de cenários: direto (pode ser executado diretamente), indireto (exigem uma mudança

de um componente) e aspectual (pode ser direto ou indireto e está disperso entre múltiplos

componentes). Em (TEKINERDOGAN, 2004) são classificados quatro tipos de componentes:

• Componente coeso, um componente que está bem definido e executa cenários

semanticamente fechados.

• Componente mal definido, um componente que consiste de vários sub-componentes,

sendo que cada um deles executa um conjunto de cenários semanticamente fechados.

• Componente entrelaçado, um componente que executa um cenário aspectual o qual é

direta ou indiretamente executado pelo componente.

• Componente composto, um componente que inclui cenários semanticamente distintos, mas

que não podem ser decompostos ou não incluem um cenário aspectual.

Page 73: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

72

Os aspectos arquiteturais são os artefatos de saída, que podem ser usados para

refatorar a arquitetura. Conforme ilustrado na Figura 5.3, o processo ASAAM consiste de

cinco atividades (TEKINERDOGAN, 2004):

Figura 5.3 – As atividades para o ASAAM – Fonte: (TEKINERDOGAN, 2004).

1. Desenvolvimento da arquitetura candidata: um design de arquitetura (candidata) fornecido

será analisado levando em conta os fatores de qualidade e potenciais aspectos requeridos.

2. Desenvolvimento de cenários: cenários provenientes de vários stakeholders são coletados,

os quais representam usos importantes e usos antecipados da arquitetura de software.

3. Avaliação de cenário individual e identificação de aspectos: a avaliação de cenários

também busca por potenciais aspectos. A aplicação de regras heurísticas resulta em uma

classificação posterior dos cenários em: cenário diretos, cenários indiretos, cenários

aspectuais e aspectos arquiteturais. Cenários aspectuais são derivados de cenários diretos ou

indiretos e representam potenciais aspectos.

4. Avaliação da interação do cenário e identificação de componentes entrelaçados: A meta

desta atividade é avaliar se a arquitetura suporta uma separação apropriada de interesses.

Inclui-se os interesses não-transversais e os aspectos arquiteturais. Para cada componente, os

componentes diretos e indiretos são analisados e categorizados em componentes coesos,

componentes entrelaçados, componentes compostos, ou componentes mal definidos.

5. Refatoração da arquitetura: A refatoração da arquitetura é proposta baseando-se na

avaliação da interação dos cenários e nas classificações dos componentes. Os aspectos

arquiteturais e os componentes entrelaçados são descritos explicitamente na arquitetura. A

ASAAM define um conjunto de regras heurísticas para categorizar cenários em cenários

diretos, cenários indiretos e cenários arquiteturais e aspectos arquiteturais (Quadro 5.1). O

ASAAM também define regras heurísticas para categorizar os componentes arquiteturais.

Desenvolvimento de uma Arquitetura Candidata

Avaliação de Cenário Individual e Identificação de

Aspectos

Avaliação da Interação de Cenários e Identificação de Componentes Entrelaçados

Refatoração da Arquitetura

Refatoração Aspectual da Arquitetura

Desenvolvimento de Cenários

Page 74: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

73

Quadro 5.1 – Regras heurísticas para avaliação de cenários – Fonte: (TEKINERDOGAN, 2004).

R0: Desenvolver artefatos CENÁRIOS baseados na DESCRIÇÃO DO PROBLEMA R1: SE CENÁRIO não requer quaisquer alterações na descrição arquitetural ENTÃO CENÁRIO torna-se CENÁRIO DIRETO R2: SE CENÁRIO requer alterações a um ou mais COMPONENTES ARQUITETURAIS ENTÃO CENÁRIO torna-se CENÁRIO INDIRETO R3: SE CENÁRIO INDIRETO pode ser resolvido após a refatoração ENTÃO CENÁRIO INDIRETO é CENÁRIO DIRETO R4: SE CENÁRIO DIRETO estiver espalhado e não pode ser localizado em um componente ENTÃO CENÁRIO DIRETO é CENÁRIO ASPECTUAL R5: SE CENÁRIO INDIRETO estiver espalhado e não pode ser localizado em um componente ENTÃO CENÁRIO INDIRETO é CENÁRIO ASPECTUAL R6: Derivar a ASPECTO ARQUITETURAL do CENÁRIO ASPECTUAL

O ASAAM tem sido implementado como um plug-in Eclipse no ambiente da

ferramenta ASAAM-T (TEKINERDOGAN; SCHOLTEN, 2005).

5.4 Uma Análise de Abordagens de Aspectos Preliminares

Na opinião de Bakker, Tekinerdoğan e Aksit (2005), apesar da noção comum e estável

sobre o conceito de aspecto no nível de programação, a noção de aspectos nas fases

preliminares (também denominados aspectos preliminares), não está consolidada. Contudo,

isto não resulta de um entendimento superficial do conceito de aspectos preliminares, mas,

principalmente, devido à falta de uma base comum para discussão em torno deste conceito.

O objetivo do trabalho apresentado por Bakker, Tekinerdoğan e Aksit (2005) é

proporcionar uma visão geral de diferentes técnicas em torno de aspectos preliminares que

possam ser usadas como guia para atividades de pesquisa, quais sejam:

• Avaliação individual das abordagens: É importante entender os conceitos subjacentes das

abordagens com seus pontos fortes e fracos em um framework de avaliação.

• Comparação das abordagens: Uma vez que as abordagens selecionadas são analisadas

individualmente, elas são comparadas para se determinar o quanto elas se sobrepõem ou

se complementam uma a outra.

• Definir as questões de pesquisa em aberto: Juntamente com o entendimento dos conceitos

essenciais do estado da arte da tecnologia, é necessário identificar seus problemas.

No Anexo 3 constam os resultados da análise de Bakker, Tekinerdoğan e Aksit (2005).

Page 75: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

74

5.5 ADLs Orientadas a Aspectos

De acordo com o framework de classificação proposto por Medvidovic e Taylor

(2000), os blocos de construção essenciais de uma descrição arquitetural são componentes,

conectores, e configurações arquiteturais. Componentes e conectores podem ter interfaces,

tipos, semântica e restrições, associados a eles, mas apenas as interfaces de componentes

explícitas são uma característica exigida para ADLs.

A literatura mostra que há uma diversidade de pontos de vistas sobre como os aspectos

(e geralmente interesses) devem ser modelados nas ADLs (NAVASA et al., 2002) (NAVASA

et al., 2005), (PINTO; FUENTES; TROYA, 2003), (PINTO; FUENTES; TROYA, 2005),

(PEREZ et al., 2003) (PEREZ et al., 2006), (PESSEMIER; SEINTURIER; DUCHIEN,

2004), (PESSEMIER et al., 2006), (BATISTA et al., 2006-a), (BATISTA et al., 2006-b).

Batista et al. (2006-a) alegam que “a introdução dos conceitos de OA nas ADLs tem

sido experimental, de forma que os pesquisadores vêm tentando incorporar nas ADLs os

principais conceitos da POA”. A maioria das ADLs OA são motivadas pela integração de

conceitos de ADL existentes (componentes, interfaces, conectores e configurações) com as

abstrações OA (aspectos, pontos de junção, conjuntos de pontos de junção, comportamentos

transversais) a fim de tratar a modelagem de interesses transversais na arquitetura.

5.5.1 A Abordagem de Navasa et al. (2002)

A partir de uma perspectiva estrutural (NAVASA et al., 2002) (NAVASA et al., 2005)

é definido um conjunto de requisitos que as atuais ADLs necessitam tratar para permitir o

gerenciamento de interesses transversais usando abstrações de conexões arquiteturais. Tais

requisitos são: (i) definição de primitivas para especificar pontos de junção em componentes

funcionais; (ii) definição da abstração de aspectos como um tipo especial de componente; (iii)

especificação de conectores entre pontos de junção e aspectos. É sugerido o uso de modelos

de coordenação para especificar os conectores entre componentes funcionais e aspectos.

Em (NAVASA et al., 2002) a separação de aspectos no nível arquitetural resume-se a

um problema de coordenação. Considere que as Figuras 5.4-a e 5.4-b especificam a

arquitetura de software do mesmo sistema. A Figura 5.4-a mostra como as arquiteturas de

software são atualmente especificadas: os arquitetos de softwares têm que especificar a

funcionalidade do sistema usando componentes e as interações entre componentes usando

conectores. Entretanto, a especificação dos interesses interferindo no sistema permanece

transversal à especificação dos componentes.

Page 76: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

75

Figura 5.4-a – Especificação convencional

de uma arquitetura de software Figura 5.4-b – Especificação separada de interesses transversais no nível arquitetural

Fonte: (NAVASA et al., 2002)

Na Figura 5.4-b a especificação de aspectos está separada, de modo que o arquiteto de

software tem que especificar componentes com suas interfaces, conexões entre interfaces e

aspectos separados.

Navasa et al. (2002) concluem que, para gerenciar a separação de interesses em nível

de design arquitetural de sistemas de software, as atuais ADLs devem ser estendidas a fim de

prover as seguintes funcionalidades:

a) Especificar componentes funcionais com interfaces e conexões entre interfaces;

b) Especificar aspectos;

c) Especificar conectores entre pontos de junção e aspectos.

5.5.2 DAOP-ADL

A DAOP-ADL é uma ADL para Desenvolvimento Dinâmico Baseado em

Componentes e Aspectos. Em (PINTO; FUENTES; TROYA, 2003) é descrita a DAOP-ADL,

baseada em componentes e aspectos para especificar a arquitetura de uma aplicação em

termos de componentes, aspectos e um conjunto de regras de compatibilidade de conexão

(plug-compatibility rules) entre eles. Com o objetivo de conectar a especificação da

arquitetura da aplicação à implementação, a linguagem usa XML e XML Schemas.

A linguagem DAOP-ADL foi projetada para ser interpretada pela DAOP, uma

plataforma dinâmica orientada a componentes e a aspectos (PINTO et al., 2001). A DAOP

Page 77: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

76

provê um mecanismo de composição que conecta aspectos a componentes, dinamicamente,

em tempo de execução (PINTO et al., 2002). O arquiteto de software usará a linguagem

DAOP-ADL em tempo de design para descrever a arquitetura da aplicação. Mais tarde esta

informação arquitetural é carregada na plataforma DAOP, a qual necessita dela para

estabelecer as conexões dinâmicas entre componentes autônomos e aspectos.

Conseqüentemente, o uso da DAOP-ADL fecha a lacuna entre o design e a implementação de

aplicação baseadas em componentes e aspectos (PINTO; FUENTES; TROYA, 2005).

5.5.3 Fractal

Em (PESSEMIER et al., 2006) a ADL Fractal é estendida usando a noção de Aspect

Components (ACs). Os ACs são responsáveis pela especificação de interesses transversais

existentes na arquitetura do software. Cada AC pode afetar componentes por meio de uma

interface de interceptação especial. Dois tipos de vinculações entre componentes e ACs são

oferecidos: (i) uma vinculação transversal direta por meio da declaração das referências a

componentes e (ii) uma vinculação transversal usando expressões de conjuntos de pontos de

junção nos nomes dos componentes, nomes de interfaces e nomes de serviços.

5.5.4 PRISMA

Na abordagem PRISMA (PEREZ et al., 2003) (PEREZ et al., 2006), os aspectos são

as novas abstrações de ADL usadas para definir a estrutura ou comportamento de elementos

arquiteturais (componente e conectores), de acordo com pontos de vistas específicos do

sistema. Os componentes e conectores incluem uma especificação de combinação que define

a execução de um aspecto e contém operadores de combinação para descrever a ordem

temporal do processo de combinação: depois, antes, durante, e outros.

5.5.5 AspectualACME

O trabalho de Batista et al. (2006-b) reflete sobre a necessidade de extensões às

abstrações convencionais frente à presença de interesses transversais. Para cada questão

levantada, foi esboçada uma solução proposta sempre que as ADLs OA e não-OA existentes

não fornecem a solução adequada. O resultado foi o desenvolvimento de uma ADL

denominada AspectualACME (BATISTA et al., 2006-a) (GARCIA et al., 2006-b), produto

de uma extensão da linguagem ACME (GARLAN; MONROE; WILE, 1997) com vistas a

apoiar a descrição de arquiteturas orientadas a aspectos.

5.5.6 Questões sobre Aspectos e Conexão Arquitetural

Segundo Batista et al. (2006-b) há sete questões fundamentais que surgem quando são

relacionados interesses transversais e abstrações de ADLs: (a) Quais elementos em uma ADL

Page 78: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

77

podem conter interesses transversais; (b) Composição; (c) Quantificação; (d) Interfaces de

Aspectos; (e) Exposição de Pontos de Junção; (f) Aprimoramentos na Interface; e (g) Como

Representar Aspectos.

Os autores optaram por focalizar nessas questões pelos seguintes motivos: (a) elas

envolvem elementos (ex.: interfaces de módulos), que têm sido discutidas nas abordagens de

implementação OA – tais como (ALDRICH, 2005), (RAJAN; SULLIVAN, 2005) –, as quais

também são arquiteturalmente relevantes; e (b) elas têm sido, recorrentemente, uma área

perigosa ou ponto de controvérsia nas soluções arquiteturais OA existentes.

I. Quais elementos de ADL podem ter interesses transversais?

Os elementos de ADL dão suporte à especificação explícita (e possivelmente

modularização) de alguns interesses arquiteturais através do uso de diferentes categorias de

elementos arquiteturais tais como componentes, conectores e configurações arquiteturais. De

acordo com o framework de Medvidovic e Taylor (2000), componentes, conectores,

configurações e interfaces de componentes constituem um conjunto mínimo de características

requeridas para ADLs. Conseqüentemente, Batista et al. (2006-b) adotaram como elementos

de ADL candidatos aqueles que podem ser afetados pelos interesses arquiteturais transversais

em pontos bem definidos.

Há algumas situações que sugerem que diferentes elementos de ADLs podem estar

sujeitos ao entrelaçamento e ao espalhamento de interesses e, conseqüentemente, os interesses

transversais podem potencialmente existir e afetá-los. Uma vez que as configurações

arquiteturais podem ser consideradas como componentes compostos, elas podem ser afetadas

por interesses transversais (BATISTA et al., 2006-b).

II. Composição

Baseado no amplo uso de conectores para diferentes propósitos de interconexão,

Batista et al. (2006-b) propuseram uma abordagem baseada em conexão a fim de modelar a

composição entre componentes “regulares” e componentes “aspectuais”.

A proposta de (BATISTA et al., 2006-b) consiste em estender a interface de conector

a fim de especificar um papel básico e um papel transversal e, também, definir uma cláusula

glue para especificar detalhes sobre a conexão, tal como o local onde o comportamento

transversal deve afetar o componente “regular” (depois, antes, ou durante). Um papel básico

pode ser conectado à porta de um componente e um papel transversal pode ser conectado à

porta de um componente aspectual.

Page 79: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

78

A configuração também tem uma função importante no modelo composicional, pois,

conforme (BATISTA et al., 2006-b), ela define a conexão entre componentes, conectores e

componentes aspectuais. Por isso, na descrição da configuração são definidos os pontos de

junção nos quais o componente aspectual age. Na verdade, o conceito de configuração já

define o ponto onde um componente une-se a um conector.

III. Quantificação

A fim de evitar a necessidade de fazer referência a cada ponto de junção

explicitamente em uma descrição arquitetural, é necessário usar um mecanismo de

quantificação que fornece uma única declaração para alcançar vários pontos de junção. Uma

vez que a parte da configuração é o local onde os pontos de junção estruturais estáticos são

identificados, o mecanismo de quantificação é definido incluindo wildcards e expressões

lógicas. A quantificação deve ser usada na conexão do papel básico com o componente

destino (BATISTA et al., 2006-b).

IV. Interfaces de Aspectos

A interface de um componente é um conjunto de pontos de interação. Uma interface,

conseqüentemente, define compromissos (envolvimentos) arquiteturais que um componente

pode fazer e restringe seu uso.

Segundo Batista et al. (2006-b), a noção de interfaces arquiteturais não deveria ser

alterada para expressar os limites de um componente “aspectual”, uma vez que, em nível

arquitetural, já possuem abstrações de conexão adequadas para a especificação tal como um

protocolo de colaboração.

Batista et al. (2006-b) afirmam que a presença de interesses transversais no design da

arquitetura leva a novos conectores aspectuais, mas as interfaces e os componentes

permanecem os mesmos.

V. Exposição de Pontos de Junção

Batista et al. (2006-b) alegam que a noção de interfaces das ADLs não necessita ser

alterada a fim de expor a natureza transversal do componente. Um “componente aspectual”, o

qual representa um interesse transversal, afeta outros componentes por meio de seus

conectores. Neste contexto, a questão é se as interfaces dos componentes afetados necessitam

expor informações extras para permitir a conexão com “componentes aspectuais” e, como

conseqüência, o conceito tradicional de interfaces em ADLs necessita ser estendido.

Page 80: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

79

Batista et al. (2006-b) alegam que, no nível arquitetural, o arquiteto deve preparar o

componente para ser afetado pelos “componentes aspectuais” expondo na interface dos

componentes a informação necessária à composição de um “componente afetado” com outros

componentes, representando um interesse transversal arquitetural. Conseqüentemente, as

ADLs deveriam suportar a exposição de pontos de junção nas interfaces dos componentes.

VI. Aprimoramentos na Interface

Algumas abordagens de implementação OA, tal como AspectJ (KICZALES et al.,

2001), também associam ao aspecto a habilidade de alteração do tipo e da interface dos

módulos por meio das chamadas declarações inter-tipos. A partir de uma perspectiva

arquitetural, isto significaria que os componentes “aspectuais” poderiam melhorar as

interfaces dos componentes com novos elementos, tais como serviços e atributos.

O ponto de vista apresentado em (BATISTA et al., 2006-b) é que tal característica não

é necessária para capturar os interesses transversais nas especificações arquiteturais. Se um

serviço ou um atributo relativo a um interesse estiver entrelaçado com outros serviços e

atributos na interface de um dado componente, é possível fiar-se, facilmente, em sua noção de

conector aspectual para expressar isso de um modo mais modular.

VII. Como Representar Aspectos?

Batista et al. (2006-b) levantam a seguinte questão: “É realmente ainda necessário

introduzir outra abstração em nível de arquitetura resultando na necessidade de treinar

arquitetos na sintaxe e na semântica de tal abstração?” Segundo Batista et al. (2006-b), as

composições de aspectos podem ser modeladas por meio de conectores, papéis transversais e

papéis básicos, sem a introdução de novas abstrações.

5.5.7 Observações

A proposta de (BATISTA et al., 2006-b) define um modelo de composição que tira

vantagem das abstrações arquiteturais existentes – conectores e configurações – estendendo-

as para dar suporte à definição de algumas facilidades de composição tal como um

mecanismo de quantificação.

A proposta de (BATISTA et al., 2006-b) está baseada no enriquecimento da semântica

de composição por meio da introdução de conectores ao invés da introdução de novas

abstrações que elevam os conceitos de LP ao nível arquitetural.

A Tabela 5.3 apresenta o resultado de uma comparação realizada por Batista et al.

(2006-b) sobre as principais ADLs-OA e as sete questões tratadas.

Page 81: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

80

Tabela 5.2 – Comparação de ADLs OA – Fonte: (BATISTA et al., 2006-b)

Questão

ADL

Questão 1

Interesses Transversais

Questão 2

Composição

Questão 3

Quantificação

Questão 4 Interface de Aspecto

Questão 5 Exposição de Pontos

de Junção

Questão 6 Melhoramento de

Interface

Questão 7 Aspectos em ADLs

Aspectual

ACME

Podem ser encontrados em componentes, conectores e em configurações

Modelada por conectores com papéis básicos e transversais e por configurações

Suportada por wildcards e operadores lógicos definidos da seção de configuração

Extensão não requerida

Os componentes e conectores podem expor seus eventos internos

Não suportado Os aspectos são modelados por meio de conectores e papéis aspectuais e básicos

Prisma Podem ser encontrados em componentes, conectores e em configurações

Componentes, conectores e configurações são definidos em termos de aspectos

Não tratado Não tratado Os aspectos têm acesso direto a todas as propriedades de um componente ou conector

Os aspectos permitem o refinamento das propriedades de componentes e conectores

Os aspectos definem a semântica de componentes e conectores

Fractal Podem ser encontrados apenas em componentes

Suporta vinculação transversal direta e vinculação transversal usando conjuntos de junção

A expressão de ponto de junção pode ser expressa em termos de interface de componente e nomes de métodos

Interface de interceptação permite a vinculação entre aspectos e componentes

As chamadas de entrada e saída a componentes podem ser expostas

Não suportado Aspect Components especificam os interesses transversais

DAOP-ADL

Podem ser encontrados apenas em componentes

Suportado por um conjunto de regras de avaliação de aspectos

Não suportado Interfaces de avaliação objetivam as interfaces de eventos

Extensão não requerida, a interfaces de componentes podem expor pontos de junção

Não suportado Uma especificação separada com uma interface de avaliação

Proposta da Navasa

Podem ser encontrados apenas em componentes

Usa conectores entre pontos de junção e aspectos

Depende do modelo de coordenação adotado

Apenas fixa que os aspectos devem ter semântica diferente dos componentes

Cria novas primitivas para especificar pontos de junção

Não suportado Aspecto é um novo componente com uma semântica diferente

Page 82: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

81

5.6 Considerações

O Desenvolvimento de Software Orientado a Aspectos (DSOA) é uma abordagem

emergente que provê meios explícitos para se modelar interesses que tendem a entrecortar

múltiplos componentes do sistema. Apesar de que inicialmente o foco estava unicamente nos

aspectos em nível de programação, recentemente uma quantia considerável de pesquisa tem

sido realizada para identificar e modelar aspectos nas fases preliminares do ciclo de vida do

desenvolvimento de software.

Nas abordagens de design arquitetural orientadas a aspecto, é possível encontrar

alternativas diferentes para atacar a questão da separação de interesses. Tais abordagens

diferem, principalmente, no que concerne ao local onde a informação de combinação é

colocada (quais aspectos são aplicados ao código primário e quando), e à fase no ciclo de vida

do software na qual o processo de combinação é executado (estaticamente durante a

compilação ou dinamicamente em tempo de execução). A variedade das abordagens é

consideravelmente extensiva, o que torna impossível cobrir todas elas neste capítulo.

Vê-se que há uma diversidade de opiniões sobre como os aspectos (e geralmente

interesses) devem ser modelados nas ADLs.

A maioria das ADLs tem o problema de ser fracamente acoplada às linguagens de

implementação, causando problemas na análise, implementação, entendimento e evolução de

sistemas de software (ALDRICH; CHAMBERS; NOTKIN, 2002-a).

Em relação às ADLs, as linguagens convencionais não provêem primitivas para se

especificar a separação de aspectos. Portanto, seria necessário especificar conexões com

outros aspectos e não apenas entre componentes, mas também entre componentes e aspectos e

aspectos com outros aspectos. Entretanto, a idéia de se ter interfaces nos aspectos não é clara.

A maioria dos trabalhos ainda não esclarecem como especificar aspectos.

Com base no que foi posto acima, conclui-se que novos mecanismos são requeridos

para se introduzir a separação de aspectos durante o design arquitetural.

Page 83: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

82

Page 84: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

83

6 – Características Desejáveis em uma ADL-OA

6.1 Introdução

Recentemente, tem havido esforços para a integração de conceitos do DSOA no

contexto específico da disciplina de Arquitetura de Software. Ainda que ambas as áreas,

individualmente, tenham uma história não muito recente, em suas atuais expressões elas são

razoavelmente jovens. Não obstante estejam intrinsecamente relacionadas, sua combinação é

uma idéia recente, presente em propostas tais como (NAVASA et al., 2002), (PEREZ et al.,

2003), (CUESTA et al., 2005), (BATISTA et al., 2006-a) e (GARCIA et al., 2006-b).

Segundo Cuesta et al. (2005), ainda há vários problemas estruturais abertos na área do

DSOA (tais como composição de aspectos, definição de prioridades nesta composição e

resolução de dependências estruturais entre eles) os quais seriam muito beneficiados quando

dissecados sob uma perspectiva arquitetural, pois as áreas de arquitetura de software e de

DSOA têm pontos em comum.

Convém observar que, a partir de trabalhos como (NAVASA et al., 2002) e

(BAKKER; TEKINERDOGAN; AKSIT, 2005), o conceito de aspecto passa a ser

dimensionado como uma abstração que transcende o nível de implementação para encontrar

espaço nas fases preliminares do desenvolvimento de software, como por exemplo, na

engenharia de requisitos e no design arquitetural. Tal concepção é de extrema relevância, já

que a engenharia de software não pode prescindir de uma vinculação conceitual coerente entre

as diversas soluções de apoio à engenharia de software (SAES)16 que dão suporte às

diferentes fases e atividades do processo de software. Destarte, a noção de aspecto arquitetural

poderá vir a fazer parte do arsenal conceitual fundamental do arquiteto de software.

A partir da consolidação do DSOA, emergiu a necessidade de refletir se as abstrações

arquiteturais fundamentais oferecem os meios necessários à modularização de interesses

transversais (CUESTA et al., 2005-a). Um interesse transversal em nível arquitetural é um

interesse que, de fato, não pode ser efetivamente modularizado usando-se as abstrações de

uma ADL convencional. A sua não modularização pode conduzir a conseqüências tais como:

acréscimo no custo de manutenção, possibilidade de reuso reduzida, e desgaste arquitetural

acima do tempo de vida do software (TARR et al., 2005) (BANIASSAD et. al., 2006).

16 Genericamente, consiste de Modelos de Processos, Métodos de Engenharia de Software, Técnicas de Desenvolvimento e Notações que apóiam as atividades de engenharia de software.

Page 85: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

84

Com a intenção de poder tratar da modelagem de interesses transversais em nível

arquitetural, a maioria das ADLs Orientadas a Aspectos (ADLs-OA) são motivadas pela

integração indiscriminada dos conceitos de ADL (tais como componentes, interfaces,

conectores, configurações)17 com as novas abstrações da POA (tais como aspectos, pontos de

junção, conjuntos de pontos de junção, comportamentos transversais, declarações inter-

tipos)18. A fim de dar suporte à modularização de interesses transversais, algumas ADLs-OA

(PEREZ et al., 2003) (PINTO; FUENTES; TROYA, 2003) têm sido desenvolvidas a partir do

zero, empregando as citadas abstrações OA.

Embora essas ADLs-OA sejam consideradas as primeiras contribuições e pontos de

vistas interessantes na área, conforme (BATISTA et al., 2006a) “ainda constam divergências

sobre como as ADLs devem ser integradas ao DSOA, pois há pouca informação sobre como e

porque são requeridas extensões às noções tradicionais de elementos de ADLs”.

É mister analisar se a presença de interesses transversais em uma arquitetura exige

extensões às abstrações convencionais existentes, e quais são essas extensões. Portanto, urge

esclarecer até que ponto os arquitetos de software estão aptos a especificar modularmente os

interesses transversais e suas interconexões com outros elementos arquiteturais.

O restante deste capítulo encontra-se organizado como segue. Na Seção 6.2 são

discutidas seis importantes diretrizes enunciadas com vistas a nortear o estabelecimento de

um conjunto de características desejáveis em uma ADL-OA. Na Seção 6.3 é apresentada uma

tabela mostrando como as seis diretrizes direcionadoras relacionam entre si. Na Seção 6.4

apresenta-se e discute-se dezesseis características consideradas desejáveis em uma ADL-OA.

Na Seção 6.5 são apresentadas duas tabelas que mostram as influências mútuas entre as

características desejáveis em uma ADL-OA. Na Seção 6.6 é apresentada a proposta de uma

notação gráfica e do formalismo para uma ADL-OA. Na Seção 6.7 estão descritas algumas

considerações à respeito deste capítulo.

6.2 Diretrizes Norteadoras

Nesta seção são enunciados alguns princípios gerais, de ampla validade no campo da

engenharia de software, consistindo em um conjunto de diretrizes norteadoras para o

estabelecimento de uma lista de características desejáveis em uma ADL-OA. Este conjunto

representa um esboço inicial que certamente será aprimorado à partir de novas pesquisas

17 Presentes no clássico framework de ADLs proposto em (MEDVIDOVIC; TAYLOR, 2000) – vide Capítulo 4. 18 Comumente adotadas em frameworks e linguagens de programação, como por exemplo na AspectJ (KICZALES et al., 2001) – vide Capítulo 5 sobre DSOA.

Page 86: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

85

Conforme (IEEE, 1993), a disciplina de engenharia de software pode ser definida

como a aplicação de uma abordagem sistemática, disciplinada e quantitativa para o

desenvolvimento, operação e manutenção de software, isto é, a aplicação da engenharia ao

software. A engenharia de software tem como principal objetivo apoiar o trabalho do

engenheiro de software com vistas à produção de software com qualidade (o qual satisfaz as

necessidades dos usuários, com desempenho sem falhas por um período de tempo satisfatório,

fácil de ser usado e modificado), com o menor esforço e maior eficiência possíveis.

Embora a área de pesquisa em engenharia de software tenha se desenvolvido muito

nos últimos anos em relação ao conjunto de ferramentas CASE19 disponíveis para apoiar o

esforço de desenvolvimento de software, pode-se dizer que algumas soluções de apoio à

engenharia de software (ex.: ADLs) ainda não foram integradas ao processo de software

como um todo (ex.: ADLs, métodos de avaliação de arquiteturas). Portanto, ainda persiste a

busca por um ambiente de engenharia de software20 que apresente capacidades para atender

idealmente as necessidades requeridas por um processo de software.

Seria insuficiente o desenvolvimento de uma nova solução de apoio à engenharia de

software sem a preocupação com sua devida integração ao processo. Um exemplo concreto

disso consiste em uma das maiores dificuldades enfrentadas pelo gerente de projeto quando

ele necessita visualizar o processo sob diferentes perspectivas ao longo do ciclo de vida do

software (CLELAND; IRELAND, 2002), pois a ausência de integração no processo provoca

rupturas, a partir das quais podem originar lapsos que comprometem a gestão do projeto.

Idealmente, os artefatos produzidos devem ser os elos de integração do processo de

software, de modo que os produtos resultantes de uma determinada atividade possam ser os

pontos de partida para atividades subseqüentes (Figura 6.1). Tal ligação visa garantir a

continuidade do processo de desenvolvimento, evitando que, ao longo do ciclo de vida,

rupturas conceituais indesejáveis sejam capazes de desencorajar o engenheiro de software a

utilizar, satisfatoriamente, os artefatos oriundos de fases precedentes. O engenheiro de

software interage com o processo mediante o uso de soluções de apoio à engenharia de

19 Um produto de software que auxilia o engenheiro de software fornecendo suporte automatizado para as atividades do ciclo de vida do software (ISO/IEC 14102-1995). 20 Um sistema que fornece suporte automatizado à engenharia de sistemas de software do processo de software; inclui plataforma, softwares de sistema, utilitários, e ferramentas CASE instaladas. A arquitetura do ambiente de engenharia de software tem dois aspectos: as ferramentas CASE que oferecem recursos para dar suporte aos processos do ciclo de vida; e um framework genérico que provê um conjunto de recursos que oferecem serviços comuns usados pelas ferramentas (ISO/IEC 14102-1995). (Vide Capítulo 7)

Page 87: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

86

software (SAESs) e, o quão mais adequadas forem tais SAESs, maior será a qualidade do

processo de software, resultando, potencialmente, e um produto final com qualidade.

Figura 6.1 – Engenheiros de software interagem com o processo de software por meio de SAESs; os artefatos produzidos constituem-se nos elos de integração do processo de software

As diretrizes norteadoras, listadas a seguir, têm como finalidade precípua assegurar

não apenas a produção de um software de qualidade, mas também a qualidade da produção

do software na perspectiva do engenheiro de software:

� Diretriz 1: Suporte aos Limites Naturais da Cognição e do Intelecto Humano

� Diretriz 2: Adoção de um Modelo de Processo de Software

� Diretriz 3: Automatização de Tarefas

� Diretriz 4: Reuso

� Diretriz 5: Suporte às Atividades de Gestão de Projetos

� Diretriz 6: Suporte ao Desenvolvimento Distribuído de Software

Na seqüência são apresentadas as explanações referentes às diretrizes enumeradas

acima, dignas de serem observadas durante o design de uma ADL-OA.

Diretriz 1: Suporte aos Limites Naturais da Cognição e do Intelecto Humano

De forma geral, as soluções de apoio à engenharia de software visam auxiliar trabalhos

essencialmente intelectuais desempenhados, primordialmente, por engenheiros de software (e

também por outros stakeholders). No que tange à sua capacidade cognitiva e intelectual (ex.:

lidar com grande número de informações e realizar análises complexas) o ser humano possui

limites inerentemente inatos, os quais independem do treinamento ou nível educacional. Um

exemplo típico dessa limitação diz respeito ao processamento simultâneo de informações.

Tarefas:

---------

---------

Tarefas:

---------

---------

- - - - -

Tarefas:

---------

---------

Atividade1 Atividade2 Atividaden

SAES

SAES

SAES

Engenheiro de Software

Engenheiro de Software

Engenheiro de Software

Artefato

Realiza

Produz Utiliza

Realiza

Artefato

Interage Interage Interage

Produz Utiliza

Realiza

Processo de Software

Page 88: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

87

Segundo a teoria de Miller (1956), encontra-se na faixa de 7 +/– 2 a quantidade de porções de

informações que podem ser armazenadas na memória de curto prazo das pessoas. Outro

exemplo clássico é o uso preferencial por notações visuais em relação ao uso de notações

formais textuais: normalmente, o ser humano encontra-se mais apto a lidar com figuras do

que com simbolismos matemáticos com sintaxe complexa e minuciosa.

Portanto, novas soluções de apoio à engenharia de software devem ser concebidas

sempre levando em consideração a pessoa humana do engenheiro de software e, com base

nessa premissa, são enunciadas as demais diretrizes constantes neste trabalho. Conforme

(CLELAND; IRELAND, 2002), o sucesso dos projetos depende, primordialmente, das

pessoas nele envolvidas e a tecnologia vem em segundo lugar.

Genericamente, é possível distinguir dois grupos de usuários de recursos

computacionais: a) usuários finais, quando as atividades apoiadas pelo computador não

apresentam qualquer relação direta com o desenvolvimento de software (Figura 6.2-a e 6.2-b)

engenheiros de software, quando as atividades são diretamente relacionadas ao

desenvolvimento de software – neste último caso, o engenheiro de software emprega soluções

de apoio à engenharia de software para se beneficiar da máquina (Figura 6.2-b).

Figura 6.2-a – Usuário final usa a máquina por

meio de uma solução de software para desempenhar atividades não relacionadas diretamente ao

desenvolvimento de software.

Figura 6.2-b – Engenheiro de software emprega SAESs para se beneficiar da máquina durante o

processo de desenvolvimento de software.

Historicamente, as soluções de apoio à engenharia de software têm tido receptividade

e sucesso ao oferecerem suporte direto ao intelecto do engenheiro de software e, ao mesmo

tempo, servirem como uma alavanca para incrementar sua capacidade cognitiva. Como

exemplos, podemos citar: a) limitação da memória humana ao lidar com código muito

extenso: solução dada em parte pela técnica de estruturação do código (DIJKSTRA, 1968) e

aprimorada pela orientação a objetos; b) abstração de detalhes de implementação ao lidar com

a estrutura global do sistema: solução alcançada pelo conceito de modularização (PARNAS,

1972) e concretizada inicialmente pelas linguagens de interconexão de módulos (DEREMER;

KRON, 1975), culminando com o conceito de arquitetura de software juntamente com o de

ADLs (PERRY; WOLF, 1992) e (GARLAN; SHAW, 1993).

SAES

Engenheiro de Software

Solução de

Software

Usuário Final

Page 89: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

88

Estudos realizados (SHAW; GARLAN, 1994) têm mostrado que o paradigma OO teve

seu sucesso garantido, em grande parte, devido ao fato de atender a esta presente diretriz.

Similarmente, o DSOA também vem se consolidando como um paradigma altamente eficaz

pelo fato de resolver um dos grandes problemas que fogem à capacidade cognitiva humana,

qual seja, lidar com a dispersão e o entrelaçamento de interesses. O raciocínio por traz do

DSOA visa proporcionar maior conforto intelectual ao arquiteto de software, oferecendo

abstrações e recursos diferenciados que facilitam o tratamento dado ao problema dos

interesses transversais.

A modularização pode ser considerada como um dos principais avanços das técnicas

de engenharia de software. Em sua essência, tal conceito constitui-se em recurso que auxilia

na superação dos limites cognitivos inerentes ao ser humano, já que sua proposta original

preconiza, entre outras coisas, o encapsulamento de decisões de design em unidades de

software e a ocultação de informações (PARNAS, 1972). Seus fundamentos têm servido de

base ao desenvolvimento estruturado, ao paradigma OO e, mais recentemente, ao DSOA.

O conceito de modularidade é imanente ao de aspecto: esta abstração possui

capacidade para apoiar o engenheiro de software em sua natural limitação cognitiva, pois os

interesses transversais não podem ser intelectualmente tratados sem o apoio de uma abstração

modular (aspecto). A idéia de aspecto está intrinsecamente relacionada à de modularidade, e

constitui-se em um recurso eficaz para superar uma natural limitação intelectual do arquiteto

de software, já que nem sempre é possível modelar e compor interesses transversais dentro de

compartimentos estanques por meio das abstrações e mecanismos convencionais.

Similarmente, as técnicas de abstração presentes nas LPs modernas (SHAW, 1984)

também ilustram essa questão, já que as LPs dependem da técnica de abstração, pois elas

gerenciam a complexidade enfatizando o que é significativo e suprimindo o que não é. Tal

abordagem favorece as análises realizadas pelos desenvolvedores, pois permite que o foco

seja centrado nos interesses que são relevantes à solução do problema em questão.

Na perspectiva do engenheiro de software (Figura 6.3-a), uma notação é um meio de

comunicação (interface) entre o homem e a máquina. Quanto mais elaboradas forem suas

abstrações (tipos de dados estruturados, tipos de dados abstratos, objetos, componentes e

aspectos), menor será a sobrecarga cognitiva imposta ao seu usuário e menor o esforço de

desenvolvimento e manutenção.

Page 90: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

89

Por outro lado, na perspectiva computacional (Figura 6.3-b), uma notação formal

textual (ex.: ADL) pode ser entendida como um meio de comunicação (interface) entre

diferentes SAESs. Quanto mais formal, precisa, e concisa forem sua sintaxe e semântica,

maior o seu poder de expressão e menor o esforço de processamento demandado na análise

dos modelos representados pela notação. Neste sentido, há grandes avanços com diversos

formalismos desenvolvidos, como π-Calculus, CSP, Redes de Petri (embora haja problemas

relacionados às limitações de interoperabilidade entre esses diversos formalismos). Portanto, é

necessário que uma dada notação contenha em seu bojo certo grau de formalismo.

Diretriz 2: Adoção de um Modelo de Processo de Software

O processo de software constitui-se em uma série de atividades que, classicamente,

inicia-se com a análise de requisitos, passa pelo planejamento, modelagem, construção, e

estende-se à fase de implantação do software. Dessa forma, uma das metas mais almejadas,

pela comunidade de engenharia de software, é a plena integração das tarefas compreendidas

nessas atividades e, por conseqüência, de todo o processo de software.

Como um dos princípios basilares neste trabalho, é defendida a necessidade de que os

produtos (artefatos) resultantes das atividades de análise em nível arquitetural sejam,

efetivamente, (re-)utilizáveis no apoio às diversas necessidades do engenheiro de software,

assim como nas atividades de gerenciamento de projeto.

Para que o desiderato da integração das atividades seja alcançado, é mister a existência

de um ambiente integrado de desenvolvimento de software propiciando um contexto onde

seja possível aos desenvolvedores atuarem do modo mais cooperativo possível.

Neste sentido, verifica-se que uma integração satisfatória só é factível se houver

interoperabilidade entre ferramentas CASE. A integração pode ser por dados, por controle,

por apresentação, ou por intermédio de metadados (ISO/IEC, 1995). Ressalta-se que a

interoperabilidade também depende da compatibilidade semântica das soluções de apoio à

engenharia de software, já que tais soluções de apoio devem ser passíveis de integração

conceitual (semântica).

Figura 6.3-a – Notação como interface entre o ser humano e a máquina

Figura 6.3-b – Notação como interfaces entre diferentes SAESs

SAES1

SAES2

Notação Notação

Page 91: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

90

Embora algumas linguagens padrão (ex.: XML) tenham possibilitado grandes avanços

em termos de compatibilidade sintática, ainda há muito trabalho a ser feito em relação à

compatibilidade semântica entre diferentes soluções de apoio à engenharia de software.

A fim de alcançar a integração e automatização do processo de software, os

desenvolvedores estão sendo contemplados com plataformas integradas de suporte ao

desenvolvimento de software (ex., .Net, Eclipse, Net Beans), as quais oferecem um amplo

conjunto de recursos, que vão desde simples editores de textos, passando por compiladores,

bibliotecas, frameworks, até uma coleção de serviços úteis (do tipo built-in) pré-

implementados. Tais plataformas devem ser integradas ao ambiente de desenvolvimento de

software como um todo, e esta integração pode se dar por meio de SAESs adequadas. Há

propostas de plataformas orientadas a aspectos, como a DAOP (Dynamic Aspect Oriented

Platform) (PINTO; FUENTES; TROYA, 2005).

Diretriz 3: Automatização de Tarefas

Uma das utilidades primárias da computação é a automatização de atividades

altamente complexas e repetitivas, passíveis de serem realizadas por máquinas, nos mais

variados campos de trabalho, principalmente aquelas atividades que vão além da capacidade

intelectual do ser humano. Há atividades do processo de software que compreendem tarefas

cuja realização demanda esforço repetitivo (ex.: codificação em linguagem de baixo nível) ou

análise demasiadamente complexa (ex.: compilação, depuração, composição, verificação da

arquitetura em relação à implementação) incapazes de serem realizadas de modo confiável

sem o apoio da máquina. Porém, algumas das tarefas do tipo citado acima, ainda não contam

com o apoio de soluções automatizadas, ex.: análise de arquitetura (CLEMENTS; KAZMAN;

KLEIN, 2002), e tampouco foram integradas ao processo de software como um todo.

Em muitos casos, a automatização depende da interoperabilidade. A interoperabilidade

pode ocorrer entre soluções de apoio à engenharia de software que oferecem suporte a

diferentes tarefas pertencentes a uma mesma atividade do processo de software (operabilidade

inter-tarefa), assim como entre soluções que apóiam tarefas compreendidas em diferentes

atividades do processo de software (operabilidade inter-atividade). Evidentemente, a

realização da operabilidade inter-atividade é mais complexa, pois exige a compatibilidade de

dados (artefatos ou metadados) produzidos em diferentes fases do ciclo de vida e, portanto,

conceitualmente distintos (diferenças na sintaxe ou na semântica). Um exemplo clássico dessa

capacidade é a geração automática de código a partir do design detalhado, ou a engenharia

reversa. Em (ALDRICH; CHAMBERS; NOTKIN, 2002-a) é apresentada uma solução que

Page 92: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

91

permite que código Java seja gerado a partir da descrição arquitetural especificada por meio

da ArchJava, e que as alterações efetuadas no código fonte sejam refletidas na arquitetura.

Como um exemplo de solução de apoio à engenharia de software que provê recursos

para a realização da operabilidade inter-tarefa, pode-se citar a ACME (GARLAN; MONROE;

WILE, 1997) (GARLAN; MONROE; WILE, 2000): essa notação, útil na fase de design

arquitetural, foi projetada, principalmente, para servir como um veículo primário a ser usado

para a transferência de uma ADL para outra, o que facilita, conseqüentemente, a

interoperabilidade entre várias ADLs, permitindo ao arquiteto valer-se dos benefícios do uso

de múltiplas notações de design.

Embora em muitas circunstâncias (ex.: interoperabilidade entre tarefas de atividades

de gestão de projeto, e tarefas inerentes às atividades do processo de software) o uso de uma

linguagem padrão possa garantir a interoperabilidade, o problema maior a ser enfrentado está

relacionado à compatibilidade semântica entre as soluções de apoio à engenharia de software

de atividades das diferentes fases do processo.

Neste sentido, é desejável que todo produto de software apresente um conjunto

mínimo de atributos de qualidade. Consoante à norma ISO/IEC 14102 (ISO/IEC, 1995),

algumas das características de qualidade a serem analisadas quando da avaliação e seleção de

ferramentas CASE são as seguintes: (a) Funcionalidade; (b) Confiabilidade; (c) Usabilidade;

(d) Eficiência; (e) Manutenibilidade; (e) Portabilidade; tais características desdobram-se em

sub-características. Adicionalmente, podem ser listadas outras características importantes de

serem analisadas em uma ferramenta CASE, quais sejam: (a) Extensibilidade dos Recursos

(DASHOFY; van der HOEK; TAYLOR, 2005); (b) Abertura de Código; (c) Escalabilidade; e

(d) Flexibilidade (COULOURIS; DOLLIMORE; KINDBERG, 2007).

Analogamente, os artefatos de software também devem preencher determinados

requisitos de qualidade (SEBESTA, 2003), dentre os quais podem ser citados os seguintes:

• Precisão: a precisão das informações contidas em um artefato de software é obtida

empregando formalismos, que é requerido também nas análises ou verificações

automatizadas, utilizando-se ferramentas CASE.

• Legibilidade: representações complexas não se constituem em problemas para as

máquinas, entretanto, para os humanos tal característica pode trazer conseqüências

indesejáveis, tais como: dificuldades associadas à compreensão e análise puramente

intelectual da representação, dificuldade de aprendizado e também de manutenção. Via de

Page 93: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

92

regra, os artefatos de software são mais facilmente compreendidos mediante a

possibilidade de representação visual ou por meio de uma notação simples, cuja sintaxe

esteja a mais próxima possível da linguagem natural, uma vez que alguns artefatos (ex.:

arquitetura de software, planos de projeto) podem vir a ser objetos de análise por parte de

stakeholders diversos, inclusive leigos (ex.: usuários finais, clientes).

• Padronização: atualmente há um grande empenho para a padronização dos formatos dos

dados que compõem os artefatos de software de modo a propiciar a tão almejada

interoperabilidade de ferramentas; há soluções propostas que se baseiam em meta-

modelos e linguagens padrão (ex.: XML).

• Leveza: além de terem que permanecer armazenados em repositórios de dados de

projetos, muitos artefatos deverão trafegar pela rede a fim de possibilitar o

desenvolvimento distribuído de software; neste sentido, surge a necessidade de que seus

respectivos arquivos não venham a acarretar altos custos de armazenamento ou

sobrecarregar o tráfego de dados pela rede de comunicação, para facilitar a atualização e

consistência do sistema.

Evidentemente, tais requisitos são mutuamente conflitantes (ex.: precisão versus

legibilidade), no entanto cabe ao designer da ADL-OA valorar cada um deles e realizar um

balanceamento (trade-off) a fim de atingir um equilíbrio relativo ao contexto.

Diretriz 4: Reuso

Da idéia de reuso originaram alguns dos primeiros avanços da engenharia de software

– ex.: estruturação do código fonte (DJIKSTRA, 1968), modularização (PARNAS, 1972)

(PARNAS; CLEMENTS; WEISS, 1985), e orientação a objetos.

Nos primórdios da computação, quando o custo de armazenamento era elevadíssimo,

as sub-rotinas foram idealizadas objetivando economizar memória. O papel das sub-rotinas

era dar condições ao programador de executar segmentos de código várias vezes, em

circunstâncias distintas (com o uso de parâmetros), sem a necessidade de duplicação do

código fisicamente em todos os trechos do programa nos quais ele fosse necessário.

Atualmente, o reuso busca, primordialmente, poupar recursos humanos, pois custo do

hardware tem diminuído acentuadamente em comparação com o custo do software (este

produzido por recursos humanos).

A filosofia da reutilização de software, em suas muitas concepções, não visa tão

somente à redução de esforço necessário para exercer as atividades, mas preocupa-se também

Page 94: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

93

com o compartilhamento e disseminação de soluções comprovadas para problemas

recorrentes. Tais soluções tendem a adquirir maturidade à medida que são adotadas e

utilizadas em projetos reais de software, resultando daí a noção básica de padrões de

software. O reuso com maturidade reduz, consideravelmente, os custos de desenvolvimento e

implica em amadurecimento e consolidação dos aspectos utilizados reiteradamente em

diversos projetos de software (GAMMA et al., 1995) (BUSCHMANN et al., 1996).

A Engenharia de Software Baseada em Componentes tem como um de seus

objetivos primordiais o reuso com vistas à redução do esforço de desenvolvimento e a

utilização de soluções maduras e comprovadas. O desenvolvimento baseado em componentes

(fruto de uma evolução do paradigma orientado a objetos) trata-se de uma evolução bem

sucedida dos princípios de reuso (SZYPERSKI, 1998).

Ainda em nível de implementação, observa-se que os aspectos e os componentes de

software servem a um propósito semelhante, a saber: encapsular um determinado interesse

que possa ser reusado posteriormente.

Um componente bem projetado deve prover uma função claramente definida e, neste

sentido, encapsular um interesse. Além disso, as plataformas de desenvolvimento disponíveis

(ex.: Net Beans, .NET) incluem um conjunto de componentes e bibliotecas, pré-definidos,

capazes de proporcionar suporte para interesses não-funcionais genéricos (ex.: concorrência,

controle de acesso, segurança) de uma maneira transparente. Em relação a isso, Cuesta et al.,

(2005) sustentam que a única diferença real entre estes componentes “tradicionais” e a noção

de aspectos é a forma como eles são decompostos em módulos e compostos em subsistemas:

a distinção essencial não está no tipo dos módulos, mas sim no relacionamento entre eles.

A Engenharia de Software Baseada em Componentes prescreve o desenvolvimento de

componentes de software com vistas a serem reutilizados na maior quantidade possível de

projetos e objetiva, também, poupar o engenheiro de software do trabalho de desenvolver

componentes a partir do zero. Tais componentes devem ser submetidos a um processo de

composição de modo a funcionarem corretamente em um todo integrado. Tal composição

pode ser realizada em tempo de desenvolvimento (composição estática) ou pode dar-se em

tempo de execução (composição dinâmica).

Em atendimento ao princípio da modularização, as informações concernentes à

composição devem estar encapsuladas em uma unidade de design que possa ser facilmente

manipulada pelo engenheiro de software. Tal unidade deve encapsular a topologia

Page 95: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

94

(configuração) resultante entre os elementos de computação (componentes) por meio dos

elementos de conexão (conectores). Caso as informações de composição estejam dispersas ou

entrelaçadas, sua modularização poderá ocorrer por meio de unidades aspectuais.

Quando o engenheiro de software concebe uma solução de software levando em

consideração o domínio da aplicação, diversas soluções genéricas para problemas recorrentes

no domínio podem ser desenvolvidas e, possivelmente, serão reutilizadas em diversos

projetos. No contexto particular de sistemas distribuídos, um amplo conjunto de soluções

poderá ser concebido visando atender necessidades comuns às aplicações pertinentes a esse

domínio, como por exemplo: controle de acesso, autenticação, tratamento de falhas,

transações distribuídas, controle de concorrência, distribuição, etc. Uma vez que tais

interesses são comprovadamente transversais, eles podem ser modularizados e representados

com clareza na forma de componentes aspectuais, inclusive em nível arquitetural.

Diretriz 5: Suporte às Atividades de Gestão de Projetos

Dada a dimensão dos atuais empreendimentos de desenvolvimento de sistemas de

software, algumas atividades, denominadas atividades guarda-chuva, são imprescindíveis ao

bom êxito dos projetos, dentre as quais se destacam: (a) Rastreamento das atividades ao longo

do ciclo de vida; (b) Gerenciamento de riscos; (c) Garantia de qualidade de software; (d)

Métricas; (e) Gerenciamento da configuração do software (PRESSMAN, 2006).

No contexto do gerenciamento de projetos de software, é fundamental a existência de

subsídios quantitativos extraídos dos artefatos produzidos ao longo do ciclo de vida, a fim de

que as tarefas de gerenciamento sejam levadas a efeito tendo como base parâmetros reais

oriundos do processo de software propriamente dito (ex.: tempo de início e de término de

tarefas, identificação do desenvolvedor responsável, interdependência entre tarefas).

A capacidade de rastreamento de alterações arquiteturais constitui-se em uma

solução eficaz para o arquiteto de software, proporcionando meios adicionais de

acompanhamento de projetos de desenvolvimento de software, principalmente aqueles cujo

desenvolvimento seja orientado à arquitetura. Uma meta associada (embora bastante

ambiciosa) é o rastreamento do implemento das decisões arquiteturais, de modo a poder

verificar se as decisões constantes na descrição arquitetural foram realmente levadas a efeito

nas fases subseqüentes.

Quando uma solução de apoio à engenharia de software não é projetada tendo em vista

o fornecimento dos dados necessários (preferencialmente quantitativos) às atividades de

Page 96: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

95

gerenciamento de projeto, as possibilidades de automatização ficam drasticamente reduzidas

ou comprometidas. Portanto, a automatização das atividades de gerenciamento depende,

fortemente, das informações contidas nos artefatos produzidos ao longo do ciclo de vida do

software.

Ademais, uma das certezas que se tem a respeito de qualquer sistema de software é

que ele passará por uma evolução, pois ocorrerão modificações em situações tais como: (a) na

presença da correção de erros; (b) quando o software tiver que ser adaptado a um novo

ambiente; (c) quando o cliente solicitar novas características ou funções; e (d) quando a

aplicação tiver que passar por um processo de reengenharia a fim de se beneficiar (ou oferecer

benefícios) a partir de em um contexto mais atual.

As soluções de apoio à engenharia de software devem subsidiar um desenvolvimento

preventivo em relação à evolução do software, de modo que: (a) a complexidade resultante

da evolução não atinja um grau que inviabilize a manutenção do software; (b) novos

engenheiros de software possam ser incorporados à equipe de desenvolvimento ou de

manutenção; e (c) uma modificação em um software produza o menor impacto possível (ex.:

minimização da propagação de efeitos colaterais).

Diretriz 6: Suporte ao Desenvolvimento Distribuído de Software (DDS)

Ante ao fenômeno da globalização, muitas organizações, buscando custos menores e

acesso às pessoas melhor qualificadas, começaram a experimentar o desenvolvimento de

software com recursos localizados remotamente. A onda da terceirização também contribuiu

bastante para esta circunstância (HERBSLEB; MOITRA, 2001).

Os recursos tecnológicos atuais estão, visivelmente, caracterizados pela computação

ubíqua (comunicação e distribuição em massa, dispositivos móveis), a qual se apresenta na

forma da comunicação entre máquinas distribuídas e pessoas dispersas geograficamente – ao

invés de ser apenas uma comunicação entre dois indivíduos ou entre um indivíduo e uma

máquina (vide Capítulo 2).

Os fatores enumerados em (HERBSLEB; MOITRA, 2001), aliados aos reflexos da

computação ubíqua (ou, no mínimo, distribuída) também influenciaram, diretamente, os

conceitos e as tecnologias utilizados no desenvolvimento de software, os quais devem ser

repensados e, quando necessário, adaptados ao novo contexto. O conceito de ambiente de

desenvolvimento de software ilustra muito bem essa situação, pois sua arquitetura teve que

ser adequada a fim de, efetivamente, apoiar o desenvolvimento distribuído de software (vide

Page 97: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

96

Capítulo 7). Neste sentido, pesquisas vêm sendo realizadas para que as tecnologias de

sistemas distribuídos possam ser usadas de forma inteligente e eficiente no âmbito do

desenvolvimento distribuído de software (PASCUTTI, 2002), (BATISTA, 2003), (PEDRAS,

2003), (MORO, 2003), (LIMA, 2004), (POZZA, 2005), (ENAMI, 2006), (WIESE, 2006) e

(SCHIAVONI, 2007), (HUZITA, 2007).

O desenvolvimento de sistemas complexos demanda a cooperação intensiva entre os

vários membros de um projeto com diferentes responsabilidades. O processo de

desenvolvimento é, freqüentemente, distribuído ao longo do tempo e do espaço e realiza-se

dentro e entre grupos de trabalho especializados.

Ambientes de desenvolvimento que, explicitamente, dão apoio ao trabalho em grupo,

são um importante pré-requisito para a produção de sistemas de software de alta qualidade.

Deste modo, uma das áreas que tem despertado o interesse de pesquisadores refere-se ao

estabelecimento de estudos relacionados ao apoio efetivo do envolvimento de diversos

profissionais que atuam cooperativamente no processo de desenvolvimento de software

(PASCUTTI, 2002).

A almejada interoperabilidade entre determinadas soluções de apoio à engenharia de

software visa proporcionar avanços no sentido de integrar as fases do ciclo de vida do

software. Contudo, há de se considerar que, no DDS, as atividades pertinentes a uma única

fase podem estar sob a incumbência de diversas equipes dispersas geograficamente, o que

pode ampliar a liberdade de escolha de soluções de apoio à engenharia de software, tornando,

assim, imprescindível o quesito interoperabilidade.

As ferramentas de groupware têm se tornado uma constante no mundo do

desenvolvimento de software, dada à grande necessidade de desenvolvimento colaborativo

inter-equipes. Contudo, as vantagens do Trabalho Cooperativo Auxiliado por Computador

(CSCW – Computer Supported Cooperative Work) estariam drasticamente reduzidas sem a

presença de soluções de apoio à engenharia de software inter-operáveis.

Uma realidade que tem se tornado cada vez mais presente é o desenvolvimento de

software com a filosofia open source (código aberto). As pessoas estão cada vez mais

aderindo a essa filosofia e utilizando soluções disponíveis na Web para a elaboração de suas

soluções de software. Contudo, o desenvolvimento open source consiste em um trabalho

eminentemente cooperativo, que requer soluções de apoio que contemplem o

desenvolvimento distribuído de software.

Page 98: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

97

Muitas ferramentas CASE utilizadas nos projetos de software estão sendo

disponibilizadas com o código aberto (ex.: Eclipse, Net Beans), o que pode gerar uma

interdependência entre os desenvolvedores da comunidade de usuários dessas ferramentas.

Deve ser salientado que a oferta cada vez maior de ferramentas de código aberto constitui-se

em um fator influenciador no ato de escolha da ferramenta CASE.

6.3 Interdependência das Diretrizes

Quando analisadas em conjunto, nota-se uma influência mútua entre as diretrizes. A

Tabela 6.1 mostra essa relação da seguinte forma: a influência exercida pelas diretrizes

constantes nas linhas sobre as diretrizes constantes nas colunas está assinalada com um X na

sua intersecção. Exemplo: a Diretriz 6 (linha) “Suporte ao desenvolvimento distribuído de

software” influencia diretamente na consecução da Diretriz 3 “Automatização de tarefas”.

• Diretriz 1: Suporte aos Limites Naturais da Cognição e do Intelecto Humano

• Diretriz 2: Adoção de um Modelo de Processo de Software

• Diretriz 3: Automatização de Tarefas

• Diretriz 4: Reuso

• Diretriz 5: Suporte às Atividades de Gestão de Projetos

• Diretriz 6: Suporte ao Desenvolvimento Distribuído de Software

Tabela 6.1 – Influência recíproca entre as diretrizes norteadores

Diretriz 1 2 3 4 5 6 1 X X X X X 2 X X X X X 3 X X X X 4 X X X 5 X X 6 X X X X

6.4 Desiderata: características desejáveis em uma ADL-OA

A estrutura dos textos explicativos sobre as características foi concebida com vistas a

constituir um conjunto mínimo de informações para que o leitor compreenda a real

necessidade de cada uma das características.

• Explicação: texto descritivo apresentando em que consiste a característica; explica porque

a presença de tal característica é imprescindível ao design de arquiteturas OA.

• Utilidade: apresenta as vantagens diretas da presença da característica em uma ADL-OA,

explicando quando tal capacidade de ADL pode ser usada durante as atividades de design

arquitetural.

Page 99: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

98

• Requisitos necessários à sua realização: são mostrados quais recursos adicionais (em

relação a uma ADL não OA) tais como recursos sintáticos e semânticos, capacidades de

expressão, elementos estruturais, etc., uma ADL-OA deve prover para que tal

característica possa ser levada a efeito.

• Diretrizes atendidas: apresentadas na Tabela 6.2 (vide Seção 6.6), referenciam as

diretrizes que fundamentais para o estabelecimento da característica em questão.

• Características relacionadas: constam na Tabela 6.3 (vide Seção 6.6), trata-se de uma

forma de mostrar as influências mútuas entre as diversas características listadas.

Por questão de clareza, o conjunto de características desejáveis em uma ADL-OA foi

subdividido em três subconjuntos principais, como segue:

I. Características relacionadas à notação de design arquitetural:

1) Aspectos arquiteturais como elementos de primeira classe;

2) Componentes aspectuais e Conectores aspectuais;

3) Representação de middlewares como conectores;

4) Modelagem de composição dinâmica;

5) Extensibilidade dos recursos de modelagem da ADL;

6) Aspectos arquiteturais built-in inerentes ao domínio;

7) Uso de bibliotecas de estilos/padrões arquiteturais;

8) Uso de bibliotecas de aspectos arquiteturais;

9) Notação visual correspondente; e

10) Formalismo subjacente.

OBS.: os itens 7 e 8 transcendem o primeiro subconjunto e estão também associados às

características relacionadas às ferramentas de apoio.

II. Características relacionadas ao método de design arquitetural:

1) Identificação de aspectos arquiteturais.

2) Avaliação/Validação arquitetural apoiada por ADLs;

3) Controle de alterações dinâmicas.

III. Características relacionadas à ferramenta de apoio:

1) Imposição da arquitetura: verificação do design detalhado e da implementação;

2) Verificação do estilo ou padrão arquitetural;

3) Rastreabilidade das alterações arquiteturais ao longo do ciclo de vida.

Page 100: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

99

6.4.1 – Características Relacionadas à Notação de Design Arquitetural

1.1.1.1. Aspectos arquiteturais como elementos de primeira classe

Defende-se que uma ADL-OA apresente capacidade de modelagem de interesses

arquiteturais transversais por meio de uma abstração particular, qual seja, uma unidade

explicitamente aspectual. Tais construtores de design devem ser elementos que não exijam

qualquer extensão adicional por parte do usuário da ADL-OA. A notação não deve exigir

esforços de seu usuário no sentido de criar abstrações a partir dos tipos primitivos da

linguagem com o objetivo de modelar os aspectos arquiteturais. Esta característica está

estreitamente relacionada à capacidade de expressão da linguagem.

Considerando que uma das metas da documentação/descrição arquitetural é a de servir

como meio de comunicação entre os stakeholders do projeto, não é interessante manter uma

mesma abstração para representar componentes convencionais e aspectos: deve ficar explícito

na descrição arquitetural que um determinado interesse é transversal (tem comportamento

disperso ou entrelaçado), ou seja, é aspectual (para ser modularizado deve-se lançar mão dos

recursos do DSOA). O implemento dessa característica depende da definição da sintaxe e

semântica da ADL-OA.

2.2.2.2. Componentes e Conectores aspectuais

O componente é, por excelência, a sede da computação do sistema de software.

Contudo, alguns interesses arquiteturais, diretamente relacionados às tarefas de computação,

podem estar dispersos e isso leva à conclusão de que, por uma questão de coerência e de

legibilidade, tais interesses devem ser modelados na forma de componentes aspectuais.

Uma conexão arquitetural compreende os elementos envolvidos nas interações de

componentes, tais como interfaces, conectores e configurações arquiteturais. As abstrações

para expressar as conexões arquiteturais desempenham um papel importante no design de

arquitetura em ADLs. Portanto, com o advento do DSOA, há uma necessidade de entender a

adequação das abstrações e conexões convencionais das ADLs a fim de capturar a natureza

transversal dos interesses arquiteturais.

Conseqüentemente, os conectores são capazes de representar tanto as interações entre

os componentes convencionais quanto entre componentes aspectuais. Semelhantemente, há a

possibilidade de entrelaçamento e dispersão das regras de coordenação ao longo da

arquitetura, o que nos leva a considerar a necessidade de conectores aspectuais. Ressalta-se

que o conceito de aspecto em AspectJ modela tanto a computação quanto a interação.

Page 101: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

100

3.3.3.3. Representação de middlewares como conectores

Boa parte dos sistemas distribuídos são implementados sobre middlewares off-the-

shelf tais como CORBA, RMI, DCOM e .NET. Entretanto, no âmbito de alguns projetos de

sistemas de software distribuídos, os designers optam pelo desenvolvimento de middlewares

próprios, a partir do zero. Alguns trabalhos (DASHOFY; MEDVIDOVIC; TAYLOR, 1999)

(MEDVIDOVIC; DASHOFY; TAYLOR, 2003) (MIKIK-RAKIK; MEDVIDOVIC, 2003)

classificam middlewares como conectores.

As questões suscitadas aqui são as seguintes: Como as ADLs-OA podem dar suporte à

modelagem arquitetural representando as interações dos interesses transversais com os

elementos pertencentes ao middleware? Quais características especiais uma ADL-OA deve

prover a fim de permitir a descrição arquitetural com conectores representados como

middleware no contexto da arquitetura do software?

Como visto no Capítulo 2, um middleware comporta-se como um conector composto

especial, consistindo em uma camada de software que serve de interface entre os aplicativos

distribuídos e a plataforma subjacente, oferecendo serviços de infra-estrutura aos aplicativos.

Entretanto, alguns dos serviços oferecidos pelos middlewares devem ser modelados, em nível

arquitetural, na forma de aspectos.

Defende-se que uma ADL-OA seja capaz de: representar, explicitamente, middlewares

na forma de conectores; modelar, expressamente, diferentes tecnologias de middleware em

uma única arquitetura; e representar os conectores aspectuais como sendo um composto de

componentes e conectores.

4.4.4.4. Modelagem de Composição Dinâmica

Uma das principais características dos sistemas distribuídos é o dinamismo de suas

arquiteturas. É desejável que um sistema distribuído mantenha-se operável ainda que uma

parcela de suas partes constituintes se torne indisponível e, conseqüentemente, este requisito

pode levar à alteração da configuração da arquitetura do sistema em tempo de execução.

Dada essa possibilidade de re-configuração dinâmica da arquitetura (principalmente

quando se tratar de um sistema distribuído e com componentes móveis) torna-se

imprescindível a capacidade de modelagem de composição dinâmica, a qual está

estreitamente relacionada com a capacidade de controle de alterações dinâmicas.

Page 102: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

101

Em nível arquitetural, a informação referente ao tempo em que ocorrerá a composição

deve estar compreendida entre as demais informações de design de modo a viabilizar as

devidas análises arquiteturais. Além disso, segundo (PAWLAK et al., 2004) há o conceito de

aspectos dinâmicos – os quais são adicionados e removidos da estrutura do sistema – que

fornece uma abordagem interessante para se descrever o dinamismo arquitetural, o qual é

particularmente complexo. No âmbito dos sistemas distribuídos, as arquiteturas dinâmicas

ocorrem com freqüência, e é essencial que o suporte às arquiteturas dinâmicas seja

acompanhado de mecanismos de composição em tempo de execução21.

5.5.5.5. Extensibilidade dos recursos de modelagem da ADL

Conforme exposto no Capítulo 4, existe uma ampla gama de ADLs, cada qual se

propondo a modelar diferentes conjuntos específicos de características do sistema. Entretanto,

para ser útil em um contexto prático do mundo real, a pesquisa em arquitetura de software

deve avançar além das notações para propósitos específicos, pois uma arquitetura deve

capturar, simultaneamente, os mais variados aspectos de um sistema de software.

É notório que as ADLs existentes são muito específicas (ex: ADLs para um único

propósito, como Rapide, Darwin, ou SADL) ou muito genéricas (ex: ACME). Ademais, o

custo para adaptar uma notação (e suas ferramentas) para dar suporte a uma nova

característica pode ser muito elevado. Via de regra, as atuais ADLs foram desenvolvidas sem

levar em consideração o reuso ou a extensão do seu próprio design, e essa abordagem pode

fazer com que o esforço de adaptação da notação existente para um novo propósito seja

proporcional ao desenvolvimento de uma nova notação a partir do zero.

Outro fator a ser destacado é que o conjunto de características relevantes a serem,

necessariamente, modeladas pode variar de um domínio para outro. Por exemplo, os projetos

de software embutidos podem requerer capacidade de modelagem detalhada para representar

o consumo de tempo e energia, ao passo que os sistemas distribuídos podem exigir recursos

de modelagem para aspectos relacionados a tolerância a falhas e uso de largura de banda.

A despeito deste amplo conjunto de necessidades em diferentes domínios, existem

necessidades de modelagem que podem ser compartilhadas por muitos projetos (ex.: atributos

de projeto). Os arquitetos de sistemas embutidos e de sistemas distribuídos podem necessitar

de capacidades para lidar com o rastreamento e gerenciamento da evolução de arquiteturas à

medida que ocorrem as liberações das versões dos produtos de software. Obviamente, os

21 Vide Seção 6.6.1 referente à Proposta de Notação Visual

Page 103: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

102

projetos dentro de um domínio particular, normalmente, poderão ter conjuntos maiores de

interesses comuns.

A questão da extensibilidade de ADLs foi tratada em (LICHTNER; ALENCAR;

COWAN, 2000) e (DASHOFY; van der HOEK; TAYLOR, 2005). Este último trabalho

apresenta uma abordagem que permite a construção rápida de novas ADLs: propõe o

encapsulamento das características de ADLs em módulos que são compostos para formar

ADLs. Os autores atingem este objetivo utilizando-se dos mecanismos de extensão fornecidos

por XML e XML Schemas: foi definido um conjunto de módulos genéricos e reusáveis de

ADL denominado xADL 2.0, extensível para apoiar novas aplicações e novos domínios. Para

apoiar a extensibilidade, foi desenvolvido um conjunto de ferramentas, baseadas em sintaxe

reflexiva, que se adaptam automaticamente às alterações da linguagem, assim como diversas

ferramentas que fornecem suporte para características avançadas da xADL 2.0.

Em (LICHTNER; ALENCAR; COWAN, 2000) é apresentado um modelo formal de

descrição de arquitetura: tal modelo formaliza os conceitos de design genéricos que são

comuns às muitas ADLs popularmente conhecidas, incluindo as principais categorias de

informação de design, seus inter-relacionamentos e restrições. O modelo foi desenvolvido

com o interesse principal de servir como uma base para um framework. As principais

categorias de design foram particionadas em um componente núcleo e em um conjunto de

extensões, permitindo a adição de informações de design úteis, ao passo que permite também

a remoção de informações menos relevantes quando estas não forem necessárias.

Conclui-se que uma infra-estrutura intermediária (fazendo o papel de uma máquina

virtual) teria a principal finalidade de possibilitar ao arquiteto estender a ADL-OA, optando

por características comuns do sistema (em nível arquitetural), e escolher as características que

sejam relevantes e que deseja modelar, a fim de adicioná-las na notação. Uma questão que

deve ser explorada é como garantir a compatibilidade semântica entre as características de

ADLs-OA: o uso de ontologia pode prover uma solução a este problema.

6.6.6.6. Aspectos arquiteturais built-in inerentes ao domínio

Sistemas de software pertencentes a um mesmo domínio, geralmente, apresentam

interesses comuns. Em se tratando de interesses transversais, uma solução pode ser a sua

modularização na forma de aspectos, os quais podem ser armazenados em uma biblioteca de

aspectos com a finalidade de serem reutilizados em projetos diversos.

Page 104: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

103

Pelo fato de serem inerentes a um determinado domínio, alguns aspectos estarão

presentes na maioria das aplicações pertinentes. Por exemplo, os sistemas distribuídos

apresentam os seguintes aspectos comuns: persistência, tolerância a falhas, autenticação,

criptografia, distribuição (concorrência), manipulação de erros e sincronização

(compartilhamento de recursos).

Considerando que o design arquitetural de uma aplicação distribuída exigirá a

presença de componentes e conectores aspectuais previsíveis (como os citados anteriormente),

é de grande utilidade ao arquiteto de software que uma ADL-OA ofereça tais aspectos na

forma de blocos de construção pré-implementados e nativos (do tipo built-in: aqui

denominados de aspectos nativos). Tal capacidade tende a aumentar o poder de expressão da

linguagem e minimizar o esforço de desenvolvimento por parte do arquiteto, inclusive com a

redução das possibilidades de erros decorrentes do uso incorreto da ADL, pois os aspectos

nativos podem ser oferecidos ao usuário da ADL-OA na forma de primitivas da linguagem.

Também será de grande utilidade ao arquiteto a capacidade de criação de novos aspectos

nativos (neste ponto, a extensibilidade da linguagem é imprescindível).

O uso reiterado de aspectos em um mesmo domínio pode culminar com a descoberta

de novos estilos ou padrões arquiteturais: se a ferramenta de apoio à ADL-OA for

implementada com a capacidade de inferir as regras comuns que governam as interações entre

componentes e aspectos arquiteturais, um novo estilo pode ser deduzido automaticamente

pela própria ferramenta, com base em um mecanismo de descoberta de estilos. Essa

capacidade requer um alto grau de formalismo na notação.

Emerge uma questão importante: Quais capacidades adicionais uma ADL-OA deve

prover para que essa capacidade possa ser implementada? A solução pode ser obtida a partir

do desenvolvimento da sintaxe e semântica da ADL: a linguagem deve oferecer condições

para que novos tipos sejam definidos e declarados pelo usuário (arquiteto de software).

7.7.7.7. Biblioteca de aspectos arquiteturais

Uma ADL com a capacidade de utilizar elementos arquiteturais armazenados em uma

biblioteca impulsionará o trabalho do arquiteto de software, possibilitando ao mesmo manter

armazenado e recuperar componentes, conectores e configurações (aspectuais ou não)

conforme as necessidades do projeto em mãos.

Aspectos clássicos, relacionados aos interesses transversais, tais como realização de

log (logging), tratamento de erros, controle de concorrência, controle de acesso, segurança e

Page 105: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

104

persistência (GARCIA et al., 2004), entre outros, poderão ser providos pela própria ADL-OA

na forma de aspectos built-in. Entretanto, alguns interesses funcionais também podem ser

transversais. Em se tratando de interesses típicos de um determinado domínio, o arquiteto de

software poderá modelá-los na forma de aspectos e armazená-los em repositórios, de maneira

que possam ser reutilizados em projetos futuros.

Emerge a questão: Quais recursos adicionais uma ADL-OA deve prover a fim de

permitir o reuso de aspectos armazenados em bibliotecas? A capacidade de definição e

declaração de novos tipos, e a capacidade de uso de bibliotecas de aspectos constitui-se nos

recursos úteis para a solução dessa questão. Tal capacidade depende da definição sintática e

semântica da ADL.

8.8.8.8. Biblioteca de estilos/padrões arquiteturais

Caso a ADL forneça capacidades que permitam ao desenvolvedor descrever as linhas

gerais de estilos/padrões arquiteturais (com vistas ao armazenamento e recuperação em uma

biblioteca), o trabalho do arquiteto de software pode ser reduzido significativamente, além de

provocar, conseqüentemente, o aprimoramento das soluções.

Emerge uma questão importante: Quais recursos adicionais uma ADL-OA deve prover

a fim de permitir o reuso de estilos/padrões armazenados em bibliotecas? Tal meta pode ser

atingida ao se projetar uma ADL-OA com capacidade de descrição de configurações

arquiteturais com vistas ao reuso: de modo que tais configurações possam ser armazenadas

em uma biblioteca e reutilizadas em projetos futuros. A idéia de reutilização pode ser

estendida ao campo dos estilos e padrões arquiteturais.

9.9.9.9. Notação visual (gráfica) correspondente

Não obstante toda ADL possa ser considerada, por excelência, uma notação formal, é

indispensável que haja uma notação visual correspondente capaz de ilustrar, de modo mais

intuitivo e simplificado, por meio de diagramas e figuras, a idéia que a representação

arquitetural intenta transmitir.

Normalmente, as pessoas possuem mais habilidade para lidar com representações

visuais (figuras ou diagramas) do que com modelos matemáticos (formalismos e simbolismo

matemáticos). A leitura do contexto deve preceder a leitura da descrição (FREIRE, 2003).

Todavia, a notação visual deve estar estreitamente associada a um formalismo subjacente.

A UML tem se tornado uma notação padrão já consagrada, tanto na indústria de

software quanto na academia. Visto que os artefatos de software resultantes nos estágios mais

Page 106: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

105

avançados da etapa de design são representados, geralmente, em UML, é interessante que a

arquitetura do software seja descrita em uma ADL-OA inter-operável com a UML.

Novamente a solução reside no uso de uma linguagem padrão (ex.: XML).

Há trabalhos que utilizaram como recurso a UML 2.0 Profile para o desenvolvimento

de uma notação visual baseada em UML (OQUENDO, 2006). Em (ALDAWUD; ELRAD;

BADER, 2003) a UML 2.0 Profile é utilizada no contexto do DSOA.

10.10.10.10. Formalismo subjacente

A presença de qualquer formalismo matemático garante um nível de precisão que está

além das capacidades das notações informais ou semi-formais. Além disso, muitas das

funcionalidades apresentadas pelas ferramentas CASE associadas são implementadas tendo

em vista os códigos dos artefatos (as ferramentas não trabalham com figuras). Grande parte

das análises arquiteturais, assim como os processos de validação com fundamento

matemático, podem ser computacionalmente implementados com base em formalismos.

Em uma perspectiva computacional, as notações formais podem ser entendidas como a

linguagem utilizada pela máquina. O quão mais formais, precisas e concisas forem suas

sintaxe e semântica, e maior o seu poder de expressão, tão menor será o esforço de

processamento demandado na sua análise. A maioria das ADLs convencionais foram

desenvolvidas com base em algum formalismo, tais como π-Calculus, CSP, Redes de Petri;

porém há problemas relacionados às limitações de interoperabilidade entre essas diversas

notações. Portanto, é necessário que a notação, na qual se baseia uma ADL-OA, seja definida

e especificada com base em certo grau de formalismo (suficiente para que os resultados das

análises realizadas pelas ferramentas sejam consistentes).

Uma questão que ainda deve ser estudada é o quão adequados são esses formalismos

para a modelagem das abstrações e mecanismos tipicamente aspectuais, principalmente no

que tange à modelagem da composição dinâmica de aspectos.

6.4.2 – Características Relacionadas ao Método de Design Arquitetural

1.1.1.1. Identificação de Aspectos Arquiteturais

Os chamados aspectos preliminares são interesses que entrecortam a decomposição

dominante de um artefato (realizada por meio de visões arquiteturais), ou módulos básicos

derivados do critério de separação de interesses, nos estágios preliminares do ciclo de vida do

software. Um aspecto na arquitetura é um interesse que entrecorta artefatos arquiteturais

(BANIASSAD et al., 2006).

Page 107: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

106

Identificar e gerenciar aspectos preliminares ajuda a aprimorar a modularidade no

design da arquitetura e detectar interesses conflitantes preliminarmente, quando os trade-offs

podem ser resolvidos mais economicamente. Tomar conhecimento de aspectos em nível

arquitetural tem como conseqüência uma implementação mais robusta.

Alguns tratamentos de arquitetura representam as estruturas e outras informações

arquiteturais como um conjunto de visões, cada qual mostrando determinados tipos de

elementos e os relacionamentos correspondentes entre esses elementos. Os três tipos básicos

de visões são: módulo, componente-e-conector, e alocação (vide Capítulo 3). Algumas visões

são híbridas, comunicando informações pertencentes a mais do que uma dessas famílias.

Um arquiteto projeta as estruturas nativas a cada uma das visões para atingir as metas

de qualidade e de comportamento do sistema. Um processo de elaboração de arquitetura

baseado em visões poderá revelar atributos comuns intra-visões ou transversais-a-visões, que

o arquiteto pode capturar como sendo aspectos (BANIASSAD et al., 2006).

Baniassad et al. (2006) consideram que as próprias visões formam a decomposição

dominante da arquitetura. O ponto chave da abordagem arquitetural multivisão é livrar-se da

idéia de que os sistemas têm apenas uma estrutura ou estilo determinando a decomposição. A

decomposição é hierárquica, uma vez que as visões têm subestruturas. O arquiteto pode

decompor uma visão em “pacotes de visões” que mostram pequenas partes do sistema em

grande profundidade, ou partes maiores do sistema em profundidade.

Os aspectos na arquitetura manifestam-se como interesses que entrecortam visões ou

partes de visões. Baniassad et al. (2006) descrevem as principais atividades a respeito dos

aspectos arquiteturais, quais sejam: identificar, capturar, compor e analisar.

Em (BASS; KLEIN; NORTHROP, 2004) os autores afirmam estar desenvolvendo um

método para derivar uma arquitetura de software a partir de seus requisitos de atributos de

qualidade, por meio de insights obtidos à partir de modelos de atributos de qualidade

denominados táticas arquiteturais. Os autores acreditam que algumas das descobertas que

ocorrem durante o processo de derivação podem ser vistas como aspectos candidatos. Em

particular, o processo de derivação ilustra o que os autores chamam de aspectos arquiteturais.

Esses autores afirmam que os aspectos arquiteturais surgem como análogos arquiteturais de

comportamento transversal (advice), conjuntos de pontos de junção (pointcuts), e pontos de

Page 108: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

107

junção (join points). Os aspectos candidatos são aspectos para serem executados através de

um design detalhado e implementados usando a POA.

Atributos de qualidade são propriedades como: confiabilidade, segurança, usabilidade,

modificabilidade, desempenho, portabilidade, etc. Alguns domínios de aplicação possuem

interesses que lhes são inerentes de modo que, desde o início do desenvolvimento da

arquitetura, o arquiteto já pode ter consciência dos principais componentes e aspectos que

farão parte da arquitetura. Entretanto, alguns interesses podem escapar a essa análise

preliminar, fazendo com que a arquitetura continue com interesses transversais não

modularizados (principalmente quando se tratar de interesse funcional, mas nada impede que

até mesmo um interesse relacionado a atributo de qualidade e de projeto permaneça não

modularizado).

Geralmente, o arquiteto de software inicia seu trabalho de análise tendo em mente

alguns interesses transversais, bastando apenas modularizá-los na forma de aspectos

arquiteturais. Inclusive, o arquiteto pode recorrer à lista dos clássicos (anteriormente citados)

sem, no entanto, descartar a presença de algum outro aspecto que não esteja tão aparente.

Há duas formas de verificar essa situação: mentalmente, por meio da aplicação mental

de heurísticas adequadas (ex.: método ASAAM); ou por meio de uma ferramenta, a qual toma

como base a descrição arquitetural e a submete a uma análise computacional com vistas a

detectar a presença de algum aspecto, o qual não se encontra visível aos olhos do arquiteto.

A meta é que a própria ADL-OA forneça subsídios suficientes para que seu conjunto

de ferramentas de suporte disponha dos recursos adequados para a identificação automática

dos interesses transversais (fazendo uso de regras heurísticas ou outro tipo de método, ex.:

ASAAM). Esta capacidade é bastante útil quando tratar-se de aspectos funcionais, inerentes a

um determinado domínio de aplicação.

Os dados da topologia da arquitetura, presentes na configuração arquitetural,

juntamente aos dados referentes às interfaces, descritos pela ADL, são os recursos úteis para

proporcionar a capacidade de identificação de aspectos. A identificação de aspectos seria uma

função desempenhada pela ferramenta de ADL, a qual teria embutida, por exemplo, um

conjunto de regras heurísticas cuja aplicação proporcionaria a captura de aspectos.

2.2.2.2. Avaliação/Validação da arquitetura apoiada por ADLs

Page 109: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

108

Há na literatura diversos métodos de análise de arquitetura: SAAM, ATAM, ARID

(CLEMENTS; KAZMAN; KLEIN, 2002) e ASAAM (TEKINERDOGAN, 2004). Nenhum

deles faz referência sobre uso automatizado da descrição arquitetural representada por ADLs.

Uma abordagem de avaliação arquitetural pode se valer dos recursos oferecidos por

notações formais de design arquitetural a fim de produzir resultados mais precisos e

estritamente condizentes com as decisões de design incorporadas na descrição arquitetural.

Uma análise apoiada por uma ferramenta de ADL produzirá resultados mais consistentes,

confiáveis e precisos.

Para que essa meta seja atingida, é necessário que a notação ofereça os subsídios

necessários para a avaliação (ex.: modelagem do uso de largura de banda, composição

dinâmica de aspectos), ou que pelo menos seja possível a sua extensão, em tempo de design.

Tal abordagem permite a adição de informações de design úteis aos métodos de análise

arquitetural

3.3.3.3. Controle de alterações dinâmicas

Um dos fatores complicadores no desenvolvimento de modelos arquiteturais reside no

design de sistemas cujas arquiteturas alteram-se dinamicamente (durante o tempo de

execução); fator esse que tem presença marcante no domínio de sistemas distribuídos. Isto se

deve ao fato de que as alterações dinâmicas estruturais podem interagir de modo sutil com as

computações em andamento. O paradigma OA prevê dois modos de composição de aspectos:

estática e dinâmica.

Arquitetura “dinâmica” diz respeito aos sistemas para os quais a composição de

componentes de interação altera-se durante o curso de uma única computação. Esse problema

foi tratado inicialmente em (ALLEN; DOUENCE; GARLAN, 1998).

Há muitos aspectos de um sistema de software que podem ser tratados em uma

descrição arquitetural e que podem ser afetados mediante a alteração dinâmica, incluindo

comportamento funcional, alocação de recursos, desempenho, tolerância a falhas,

flexibilidade em face de requisitos alterados, etc.

Uma ADL-OA deve fornecer recursos para a modelagem comportamental do sistema,

permitindo a imposição de restrições na configuração arquitetural. Neste sentido, a questão da

inter-operabilidade é essencial para o cumprimento desse desiderato, pois é comum que um

sistema distribuído apresente considerável grau de heterogeneidade.

Page 110: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

109

6.4.3 – Características Relacionadas às Ferramentas de Apoio

1.1.1.1. Imposição da arquitetura: verificação do design detalhado e da implementação

A atividade de desenvolvimento de software compreende uma série de etapas que,

classicamente, inicia-se na fase de levantamento de requisitos e estende-se até à fase de

manutenção. A fase de design arquitetural encontra-se entre as etapas preliminares, e as

decisões de design contidas na descrição arquitetural podem não ser respeitadas nas fases

subseqüentes.

Essa possível incongruência entre a arquitetura do software e os produtos das

atividades realizadas nas fases subseqüentes (análise, implementação e manutenção) pode ser

oriunda dos seguintes fatores: alterações dos requisitos funcionais; limitações tecnológicas

nas etapas de análise e implementação subseqüentes; descoberta de soluções mais adequadas;

e até mesmo por falhas humanas na execução das tarefas relacionadas. Tais ações acarretam a

denominada erosão arquitetural.

Seria vão e ineficaz um grande esforço na fase de design arquitetural se as fases

subseqüentes não seguissem à risca as decisões incorporadas na documentação arquitetural.

Há alguns trabalhos nesse sentido, como por exemplo ArchJava (ALDRICH; CHAMBERS;

NOTKIN, 2002-a) e DAOP-ADL (PINTO et al., 2003), que prezam pela verificação da

compatibilidade entre a arquitetura e a implementação, porém há uma dependência entre a

ADL e a LP usada na implementação.

Ao fornecer uma forma de verificar se a implementação está acontecendo conforme as

decisões arquiteturais incorporadas na descrição arquitetural durante a fase de análise, a ADL

torna-se capaz de impedir (ou minimizar) a erosão arquitetural. Em parte, o problema da

erosão arquitetural decorre da não obediência às decisões arquiteturais preliminares.

A questão suscitada nesse momento é a seguinte: “Seria possível impor a arquitetura

às fases subseqüentes? Em caso afirmativo, seria possível tornar a ADL independente da LP?

Como essa independência poderia ser levada a efeito?

A imposição é possível desde que haja uma forma de confrontar a descrição

arquitetural com o design detalhado e, na seqüência, com o código fonte. Neste ponto surge

um problema de semântica das informações, o qual pode ser resolvido por meio de um

“tradutor” capaz de abstrair informações de níveis inferiores para o nível arquitetural. É

bastante provável que o uso de conceitos de ontologia seja eficaz nessa tarefa de abstração.

Page 111: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

110

A questão da independência da ADL em relação à LP pode ser alcançada mediante o

conceito de abstração presente em uma máquina virtual: uma camada intermediária entre o

nível arquitetural e o código fonte. Se o design detalhado estiver estritamente compatível com

a descrição arquitetural, essa questão torna-se mais simples, pois a verificação da

compatibilidade entre o design detalhado e a implementação já apresenta soluções (geração de

código fonte e engenharia reversa).

2.2.2.2. Verificação do estilo ou padrão arquitetural

A utilização de estilos ou padrões em uma determinada arquitetura de software tem

muitas vantagens, como a agregação de uma solução já comprovada dentro de um contexto ou

domínio delimitado. A erosão poderá ocorrer em todas as fases subseqüentes, mas pode

ocorrer, inclusive, na própria etapa de design em nível arquitetural, decorrente de freqüentes

atualizações da arquitetura.

Há situações em que o arquiteto de software se aprofunda em refinamentos sucessivos,

ou que a arquitetura começa a ganhar uma dimensão que vai além daquela em que o arquiteto

é capaz de manter sob controle meramente intelectual (com base nas regras específicas do

estilo). Assim, surge a necessidade de um recurso de monitoramento e restrição das ações do

arquiteto, isto é, coibindo suas ações, quando estas violarem as regras do estilo (é possível até

mesmo permitir a ação, mas notificar o arquiteto de que as regras do estilo estão sendo

violadas).

É de se esperar que uma dada arquitetura venha a ser elaborada não apenas com base

em um único estilo (arquiteturas híbridas), e essa possibilidade justifica ainda mais a

necessidade de um suporte automático a fim de aliviar a sobrecarga cognitiva exigida do

arquiteto. É fato que o atendimento aos requisitos não funcionais (de projeto e de qualidade)

está estreitamente relacionado à qualidade arquitetural, entretanto, uma vez que o arquiteto

tenha decidido por um determinado estilo, é bastante salutar que ele possa permanecer

despreocupado com tais questões durante o restante do design em nível arquitetural.

Almeja-se uma ferramenta que efetue a verificação da compatibilidade da arquitetura

descrita em relação a um determinado estilo previamente documentado e devidamente

armazenado em biblioteca. Os dados necessários à verificação de compatibilidade com estilos

e padrões estão compreendidos nas informações referentes à configuração arquitetural e às

interfaces dos elementos arquiteturais descritas por meio da ADL-OA.

Page 112: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

111

3.3.3.3. Rastreabilidade das alterações arquiteturais ao longo do ciclo de vida

As alterações arquiteturais, quando não devidamente gerenciadas, podem ser

prejudiciais, acarretando, entre outras conseqüências, o aumento nos custos de manutenção e a

discrepância da documentação frente ao produto implementado. Tais conseqüências

inviabilizariam todo o esforço realizado na fase de design arquitetural.

Uma ferramenta de ADL apresentando a capacidade de rastreamento de alterações

arquiteturais constitui-se num recurso ideal para os gerentes de projeto, proporcionando meios

adicionais para o acompanhamento do projeto centrado na arquitetura.

A capacidade de rastreamento das alterações arquiteturais ao longo do ciclo de vida,

com vistas a minimizar a erosão arquitetural, requer mecanismos especiais implementados

pela ferramenta da ADL (ex.: registro do histórico da arquitetura, motivos das alterações e

responsáveis), assim como algumas propriedades adicionais na própria notação, como por

exemplo a verificação da compatibilidade entre a descrição arquitetural inicial e artefatos

gerados posteriormente (ex.: caso a arquitetura seja alterada depois que o design detalhado

tenha sido realizado, é necessário verificar a compatibilidade de ambos, ou pelo menos alertar

o arquiteto sobre esse fato). A capacidade de refinamento arquitetural é também

imprescindível.

É importante que tanto o arquiteto como o gerente de projeto disponham de algum

recurso de controle por meio do qual seja possível gerenciar de modo seguro, confiável e

racional a possível seqüência de alterações. O gerenciamento racional apoiado por uma

ferramenta de ADL ajudará a evitar que alterações em fases subseqüentes possam provocar

incongruências entre as decisões arquiteturais iniciais.

O rastreamento pode ser levado a efeito por meio da integração das etapas do ciclo e

vida do software, com vistas a permitir a verificação da compatibilidade entre a arquitetura

inicial e os artefatos das fases subseqüentes: design detalhado; implementação; atualizações e

alterações na manutenção do software.

6.5 Relações entre Diretrizes e Características

A Tabela 6.2 mostra as relações existentes entre as diretrizes norteadoras e o elenco de

características desejáveis; a intersecção entre uma linha (característica) e uma coluna (diretriz)

assinalada, indica que a característica participa do atendimento à respectiva diretriz. Exemplo:

a Característica 8 (Grupo 1) “Uso de bibliotecas de aspectos arquiteturais” é essencial para

que a Diretriz 3 “Automatização de tarefas” seja atendida.

Page 113: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

112

I. Características relacionadas à notação de design arquitetural:

1) Aspectos arquiteturais como elementos de primeira classe;

2) Componentes aspectuais e Conectores aspectuais;

3) Representação de middlewares como conectores;

4) Modelagem de composição dinâmica;

5) Extensibilidade dos recursos de modelagem da ADL;

6) Aspectos arquiteturais built-in inerentes ao domínio;

7) Uso de bibliotecas de estilos/padrões arquiteturais;

8) Uso de bibliotecas de aspectos arquiteturais;

9) Notação visual correspondente; e

10) Formalismo subjacente.

II. Características relacionadas ao método de design arquitetural:

1) Identificação de aspectos arquiteturais.

2) Avaliação/Validação arquitetural apoiada por ADLs;

3) Controle de alterações dinâmicas.

III. Características relacionadas à ferramenta de apoio:

1) Imposição da arquitetura: verificação do design detalhado e da implementação;

2) Verificação do estilo ou padrão arquitetural;

3) Rastreabilidade das alterações arquiteturais ao longo do ciclo de vida.

Tabela 6.2 – Diretrizes norteadoras atendidas pelas características desejáveis

Característica Diretriz

Suporte a Limites Cognitivos

Modelo de Processo

Automatização Reuso Gestão de Projetos

Desenv. Distribuído

Grupo 1

1 X X X X X 2 X X X X X 3 X X X X X 4 X X X X X X 5 X X X 6 X X X X X X 7 X X X X X X 8 X X X X X X 9 X X X X

10 X X X

Grupo 2 1 X X X X X X 2 X X X X X 3 X X X X X X

Grupo 3 1 X X X X X 2 X X X X X 3 X X X X X X

Page 114: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

113

A Tabela 6.3 mostra as relações existentes entre as próprias características; a

intersecção entre uma linha e uma coluna assinalada, indica que uma característica está

diretamente associada à outra. Exemplo: a Característica 4 (Grupo 1) “Modelagem de

composição dinâmica” está diretamente relacionada à Característica 3 (Grupo 2) “Controle de

alterações dinâmicas”.

Tabela 6.3 – Inter-relacionamento das características desejáveis em uma ADL-OA

Características Grupo 1 Grupo 2 Grupo 3

1 2 3 4 5 6 7 8 9 10 1 2 3 1 2 3

Grupo 1

1 X X X X X X X 2 X X X X X X X X X 3 X X X X X X X X 4 X X X X X X X X X X X 5 X X X X X X X X X 6 X X X X X X X X X 7 X X X X X X X X X X X X X 8 X X X X X X X X 9 X X X X X X X X X X

10 X X X X X X X X X X X X X X X

Grupo 2 1 X X X X X X X X X X X X X 2 X X X X X X X X 3 X X X X X X X X

Grupo 3 1 X X X X X X X X 2 X X X X X X X X 3 X X X X X X X X X

A Tabela 6.4 mostra uma comparação realizada entre as ADLs-OA pesquisadas e as

características propostas no âmbito deste trabalho. Vê-se que, entre as características

elencadas, oito delas não são contempladas nas ADLs-OA pesquisadas, quais sejam:

Middlewares modelados como conectores; Aspectos nativos (built-in); Biblioteca de estilos;

Controle de alterações dinâmicas; Suporte à avaliação arquitetural; Suporte à identificação de

aspectos arquiteturais; Verificação de estilos/padrões arquiteturais; Rastreabilidade de

alterações arquiteturais ao longo do ciclo de vida do software.

Page 115: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

114

Tabela 6.4 – Comparação das ADLs-OA em relação às características propostas

ADL Característica

AspectualACME Prisma Fractal DAOP-ADL Proposta de Navasa

Aspectos como Elementos de Primeira Classe

Sim: construtores primitivos da linguagem

Sim: construtores primitivos da linguagem

Não: baseia-se no modelo de AC

Sim: construtores primitivos da linguagem

Sim: construtores primitivos da linguagem

Componentes Aspectuais Não: utiliza os mesmos construtores para modelar interesses transversais

Sim: provê novos construtores com novas abstrações

Sim: estende componentes convencionais

Sim: provê novos construtores com novas abstrações

Sim

Conectores Aspectuais Extensão da noção de conectores tradicionais conector regular com nova interface

Sim: provê novos construtores com novas abstrações

Não Sim: provê novos construtores com novas abstrações

Não

Middlewares Modelados como Conectores

Não Não Não Não Não

Modelagem da Composição Estática: modelada por meio de conectores aspectuais em tempo de design

Estática: realizada em tempo de design

Estática: realizada em tempo de design

Dinâmica: realizada por meio da plataforma DAOP

Estática: realizada em tempo de design

Extensibilidade Sim: usa a ACME como base Não Não Não Não

Aspectos Nativos (built in) Não Não Não Não Não

Biblioteca de Estilos Não Não Não Não Não

Biblioteca de Aspectos Não Não Não Sim Não

Notação Visual Sim: extensão da notação da ACME

Sim: notação própria Sim: notação própria Sim: notação própria Sim: notação própria

� Compatibilidade com a UML Não Sim Não Não Não

Formalismo subjacente Não Não Sim Não Usa modelos de composição

Controle de Alterações Dinâmicas Não Não Não Não Não

Suporte a avaliação Não Não Não Não Não

Identificação de Aspectos Não Não Não Não Não

Verificação do Design e da Implementação

Não Não Não Sim: usa um framework de desenvolvimento

Não

Verificação do estilo/padrão Não Não Não Não Não

Rastreabilidade de Alterações Não Não Não Não Não

Page 116: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

115

6.6 Proposta de Notação Visual e Formalismo para uma ADL-OA

Uma dada arquitetura de software pode ser caracterizada de acordo com sua evolução

em tempo de execução. Uma arquitetura é considerada: (a) estática, se ela não evoluir durante

a execução do sistema; (b) dinâmica, se for possível a sua evolução em tempo de execução

(ex.: componentes puderem ser criados, excluídos, ou re-configurados em tempo de

execução); e (c) móvel, se os seus componentes puderem se mover (sob uma perspectiva

lógica) durante a execução.

Normalmente, conforme (IEEE, 2000), a partir de uma perspectiva em tempo de

execução, são usados dois pontos de vista na arquitetura de software, quais sejam:

a) estrutural, especificado em termos de componentes, conectores e configurações;

b) comportamental, especificado em termos de: as ações que o sistema executa ou

participa; os relacionamentos entre ações para especificar comportamentos; e

comportamentos de componentes e conectores, e como eles interagem.

Portanto, a fim de descrever arquiteturas dinâmicas e móveis, uma ADL deve ser

capaz de descrever as alterações nas estruturas e nos comportamentos dos componentes e

conectores (inclusive criação, exclusão, re-configuração e movimentação) em tempo de

execução (OQUENDO, 2004).

Diversos trabalhos levaram em consideração as arquiteturas dinâmicas: Rapide

(LUCKHAM et al., 1995), (LUCKHAM; VERA, 1995); Darwin (MAGEE et al., 1995),

(MAGEE; KRAMER, 1996); Dynamic-Wright (ALLEN; DOUENCE; GARLAN, 1998);

Dynamic-ACME (GARLAN; MONROE; WILE, 2000).

Mais recentemente, outros trabalhos têm buscado contemplar, em suas propostas, a

modelagem da mobilidade dos componentes, além da característica de dinamismo

arquitetural: π-ADL (OQUENDO, 2004); Con Moto22 (GRUHN; SCHÄFER, 2004),

(GRUHN; SCHÄFER, 2005). Contudo, essas duas propostas ainda não foram estendidas a

fim de permitir a modelagem de arquiteturas de software orientadas a aspectos. Ressalta-se

que em (ALDAWUD; ELRAD; BADER, 2003) os autores apresentam a utilização do recurso

UML Profile com a finalidade de apoiar o desenvolvimento de software orientado a aspectos.

Não obstante a DAOP-ADL seja uma ADL orientada a aspectos que trata,

explicitamente, de questões relacionadas ao dinamismo arquitetural (PINTO; FUENTES;

22 Do italiano: “em movimento”.

Page 117: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

116

TROYA, 2003), (PINTO; FUENTES; TROYA, 2005), essa proposta não contempla a questão

da mobilidade dos componentes, bastante presente no domínio de sistemas distribuídos.

A presente proposta de uma ADL-OA pretende contemplar as características elencadas

anteriormente (relacionadas à notação de design arquitetural), quais sejam:

1) Aspectos arquiteturais como elementos de primeira classe: a notação permitirá ao

arquiteto de software modelar os interesses transversais por meio de construtores

arquiteturais básicos providos pela ADL, sem a necessidade de extensão.

2) Componentes aspectuais: a notação permitirá (por meio da abstração de aspecto

arquitetural) a modelagem de interesses arquiteturais transversais cujo papel primário

seja a computação.

3) Conectores aspectuais: a notação permitirá a modelagem de interesses arquiteturais

transversais cuja finalidade seja a mediação da interação entre componentes e aspectos.

4) Representação de middlewares como conectores: a notação permitirá a modelagem

explícita de conectores especiais off-the-shelf, cuja finalidade é o fornecimento de

serviços essenciais (vide Capítulo 2) para que os componentes em um sistema distribuído

possam funcionar juntos; por serem bastante elaborados, tais conectores são, por sua

própria natureza, conectores compostos.

5) Modelagem de composição dinâmica: a composição dinâmica poderá ocorrer mediante

a interação de um aspecto arquitetural com outro elemento arquitetural.

6) Extensibilidade dos recursos de modelagem da ADL-OA: o usuário da notação poderá

utilizar os estereótipos para estender a notação.

7) Aspectos arquiteturais built-in inerentes ao domínio: A notação fornecerá, na forma

de primitivas da linguagem, alguns aspectos básicos, inerentes ao domínio de sistemas

distribuídos (ex.: autenticação, controle de acesso, logging, tratamento de erros). Tais

aspectos encontram-se pré-especificados, bastando ao usuário da ADL invocá-los por

meio do uso de palavras reservadas ou utilizando os ícones adequados, disponibilizados

na interface gráfica da ferramenta da ADL.

8) Uso de bibliotecas de estilos/padrões arquiteturais: estilos já consagrados, mormente

no domínio de sistemas distribuídos, poderão ser fornecidos ao usuário; no ato da

descrição da arquitetura, o arquiteto poderá referenciar o estilo por meio de um comando.

9) Uso de bibliotecas de aspectos arquiteturais: da mesma forma que a ADL oferecerá

uma coleção de aspectos arquiteturais nativos, o usuário poderá especificar novos

aspectos e armazená-los, disponibilizando-os na biblioteca para uso futuro.

Page 118: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

117

Além disso, duas características, que expressam o dinamismo arquitetural e estão

bastante presentes em uma arquitetura de sistema de software distribuído, devem ser

modeladas, a saber: replicação e mobilidade dos componentes. É importante que tais

características sejam modeladas, explicitamente, a fim de permitir a compreensão imediata da

arquitetura por parte dos diversos stakeholders. Tais características são úteis para representar,

em nível de design arquitetural, requisitos de um sistema distribuído, tais como:

escalabilidade, concorrência, tolerância a falhas, e dinamismo arquitetural.

6.6.1 Notação Gráfica

A UML versão 2.0 (OMG, 2007), não apresenta diagramas específicos para a

modelagem de arquiteturas. Na verdade, o Diagrama de Componentes, que na UML 1.5 servia

como diagrama detalhado para sistemas baseados em componentes (com o foco na visão de

implementação do sistema em termos de componentes de software), sofreu uma evolução: na

UML 2.0 os componentes foram generalizados e são considerados como estando em um nível

de abstração mais elevado do que as classes, tendo sido introduzido o Diagrama de Estrutura

Composto (OQUENDO, 2006).

Embora o recurso de máquinas de estado finito da UML possa ser usado efetivamente

para a modelagem do comportamento dinâmico dos componentes e conectores (e suas

interações), a UML 2.0 não oferece construtores especializados para a modelagem de

arquitetura de software a partir de uma perspectiva em tempo de execução (ex.: componentes

e conectores devem ser modelados usando o mesmo mecanismo, e as regras de um

determinado estilo arquitetural devem ser aplicadas mentalmente pelo arquiteto de software).

Entretanto, a UML 2.0 fornece uma base adequada para a definição de perfis (profiles)

para que a modelagem formal de uma arquitetura de software seja possível. Assim, uma

notação visual correspondente para uma ADL-OA pode ser definida a partir do recurso de

estereótipos da UML 2.0. Em (OQUENDO, 2006), é apresentada essa abordagem, a qual deu

origem à notação visual da linguagem π-ADL (OQUENDO, 2004). Uma vez que

consideramos ser interessante que a notação visual tenha compatibilidade com a UML, a

elaboração de nossa proposta de notação visual encontra-se baseada na abordagem utilizada

por Oquendo (2006).

A Tabela 6.5 apresenta os ícones referentes à notação gráfica proposta no presente

trabalho.

Page 119: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

118

Tabela 6.5 – Proposta de uma notação gráfica para uma ADL-OA Estereótipo Ícone Significado Exemplo

<<componente>>

Componente convencional. Componente GUI.

<<componente replicado>>

Componente convencional o qual se encontra replicado no sistema.

Componente Banco de Dados.

<<componente móvel>>

Componente convencional o qual se movimenta em tempo de execução.

Componente GUI.

<<componente composto>>

Componente composto por outros elementos arquiteturais (componentes e conectores).

Componente Aplicação, o qual é composto por vários outros componentes.

<<conector>>

Conector convencional.

Um link SQL entre o Componente GUI e qualquer Componente Banco de Dados.

<<conector replicado>>

Conector convencional o qual se encontra replicado no sistema.

Um link SQL entre o Componente GUI e um Componente Banco de Dados replicado.

<<conector composto>>

Conector convencional, mais elaborado, composto por outros elementos arquiteturais (componentes e conectores).

Um conector que pode agrupar serviços e estabelecer a ligação entre diferentes componentes, pode ser entendido como sendo um conector composto.

<<middleware>>

Um conector composto especial (possivelmente off-the-

shelf), o qual provê determinados serviços básicos para o funcionamento de um sistema distribuído.

A Camada de Infraestrutura, contendo os serviços essenciais ao funcionamento do sistema.

M

Page 120: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

119

Estereótipo Ícone Significado Exemplo

<<interface>> Consiste nas conexões entre o componente e seu

ambiente. Um atributo de entrada/saída de um método ou set/get.

<<aspecto>>

Modela os interesses arquiteturais transversais (funcionais e não-funcionais).

Aspecto Persistência, ou Concorrência em um ADDS.

<<aspecto replicado>>

Aspecto que se encontra replicado no sistema.

Aspecto Controle de Acesso o qual se conecta com um Componente Banco de Dados replicado de um ADDS.

<<conector aspectual>>

Modela a interação entre um aspecto e outro elemento arquitetural.

Conector entre o Aspecto Persistência e qualquer outro elemento arquitetural.

<<aspecto móvel>>

Componente aspectual o qual se movimenta em tempo de execução.

Qualquer Aspecto que seja passível de composição com algum outro elemento arquitetural móvel

<<composição dinâmica>

Modela uma conexão entre um elemento aspectual e outro elemento arquitetural, explicitando a situação na qual ocorrerá composição em tempo de execução.

Relacionamento que indica a composição aspectual em tempo de execução entre o Aspecto Controle de Acesso e, por exemplo, um Componente Aplicação.

Obs.: no Capítulo 7 (vide Seção 7.5) é apresentado um experimento envolvendo a representação arquitetural de um Ambiente Distribuído de Desenvolvimento de

Software, a saber, o DiSEN (Distributed Software Engineering Environment), no qual são demonstradas as vantagens do uso desta notação gráfica.

M

Page 121: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

120

6.6.2 Formalismo Subjacente

A representação formal de uma arquitetura está mais apta a ser mantida e seguida do

que uma representação informal, pois pode ser consultada mais rapidamente e ser mais

facilmente transferida para outros projetos (BASS; CLEMENTS; KAZMAN, 2003).

A definição da Rapide, uma linguagem baseada em eventos, espelha-se no modelo de

execução fundado no conceito de posets (partially ordered set of events) (FIDGE, 1988). Para

a Dynamic-Wright, a notação para a especificação de comportamento baseado em eventos é

uma adaptação do CSP (HOARE, 1978).

A semântica operacional da Darwin baseia-se no formalismo do π-Calculus

(MILNER; PARROW; WALKER, 1992). A π-ADL é uma linguagem formal baseada no π-

Calculus. A ADL Con Moto também teve seu formalismo desenvolvido para a especificação

de propriedades não-funcionais, com base no π-Calculus.

Excetuando-se a π-ADL e a Con Moto, as demais linguagens não têm poder de

expressão suficiente para descrever arquiteturas dinâmicas nas quais as alterações

arquiteturais dependem de seus dados de entrada; além disso, elas não apresentam

construtores arquiteturais capazes de modelar explicitamente a descrição de componentes

móveis.

Com base nas considerações precedentes, é razoavelmente provável que o π-Calculus

seja o formalismo capaz de oferecer mais condições para a definição de uma ADL suficiente

para a modelagem de arquiteturas de sistemas de software distribuídos.Entretanto, ainda não

encontramos uma resposta sobre como estender tal formalismo de modo que as características

desejáveis em uma ADL-OA (ex.: composição dinâmica) possam se fazer presentes na

notação formal, constituindo-se, portanto, como uma sugestão para trabalho futuro.

Como pode ser observado na Tabela 6.6, o π-Calculus é o formalismo utilizado pelas

ADLs seguintes: π-ADL (projetada para modelar arquiteturas de sistemas dinâmicos); Darwin

(inicialmente projetada para dar suporte à modelagem dos requisitos não funcionais de

sistemas distribuídos); e Con Moto (cuja ênfase está na modelagem da mobilidade dos

componentes de um sistema distribuído). As ADLs Rapide e a Dynamic-Wright estão

embasada nos formalismos providos por posets e CSP, respectivamente.

Page 122: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

121

Tabela 6.6 – Formalismos empregados pelas principais ADLs para o domínio de SDs

Formalismo ADLs

posets CSP π-Calculus

Rapide

Dynamic-Wright

π-ADL

Darwin

Con Moto

A Tabela 6.7 mostra claramente que o formalismo π-Calculus é o que mais contempla

algumas das capacidades de modelagem requeridas no design arquitetural de sistemas

distribuídos.

Tabela 6.7 – Algumas capacidades de modelagem encontradas nos formalismos estudados

Formalismo Capacidade de modelagem

posets CSP π-Calculus

Alterações arquiteturais dependentes de dados de I/O

Dinamismo arquitetural

Mobilidade dos componentes

Especificação de propriedades não funcionais

Comportamento baseado em eventos

Depreende-se, intuitivamente, com base na análise das Tabelas 6.6 e 6.7, que o

formalismo π-Calculus é um candidato em potencial, pois seu poder de expressão,

provavelmente, atenderá às necessidades de modelagem de uma ADL-OA para sistemas

distribuídos.

6.7 Considerações

Não foram realizados experimentos em relação à definição de qual formalismo

matemático é o mais adequado para o design da notação textual de uma ADL-OA.

A Tabela 6.8 mapeia as características em relação aos elementos da notação visual

proposta. Por exemplo, a características Rastreabilidade de Alterações depende,

fundamentalmente, do elemento Composição Dinâmica da notação visual de uma ADL-AO.

Page 123: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

122

Tabela 6.8 – Mapeamento dos elementos da notação visual proposta (Seção 6.7.1) frente às características elencadas (Seção 6.5) Elementos

Característica Componente

Replicado Componente

Móvel Conector Replicado

Middleware Aspecto Aspecto

Replicado Conector Aspectual

Aspecto Móvel

Composição Dinâmica

Aspectos como Elementos de Primeira Classe

Componentes Aspectuais

Conectores Aspectuais

Middlewares Modelados como Conectores

Modelagem da Composição

Extensibilidade

Aspectos Nativos (built in)

Biblioteca de Estilos

Biblioteca de Aspectos

Notação Visual

Formalismo subjacente

Controle de Alterações Dinâmicas

Suporte a avaliação

Identificação de Aspectos

Verificação do Design e da Implementação

Verificação do estilo/padrão

Rastreabilidade de Alterações

Page 124: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

123

7 – Modelagem Arquitetural do DiSEN: Um exemplo de utilização de uma ADL-OA

7.1 Introdução

Com base na proposta da notação gráfica para uma ADL-AO, exposta no Capítulo 6,

neste capítulo serão apresentados os resultados de um experimento de modelagem arquitetural

de um Ambiente Distribuído de Desenvolvimento de Software (ADDS), a saber, o DiSEN

(Distributed Software Engineering Environment).

O restante deste capítulo encontra-se organizado como segue. Na Seção 7.2 é

fornecida uma visão geral do sistema alvo, citando alguns trabalhos associados. Na Seção 7.3

são apresentados os requisitos genéricos do sistema e os principais cenários. Na Seção 7.4 é

discutida a arquitetura ADDS DiSEN. Na Seção 7.5 encontram-se ilustradas algumas

representações arquiteturais do ADDS DiSEN. As considerações referentes ao experimento

encontram-se registradas na Seção 7.6.

7.2 O DiSEN: Visão Geral

Um Ambiente de Desenvolvimento de Software (ADS) tem como objetivo: prover um

ambiente onde o software possa ser desenvolvido por meio da integração de um conjunto de

ferramentas que dêem suporte a métodos de desenvolvimento apoiados por uma estrutura que

permite a comunicação e cooperação entre essas ferramentas e os desenvolvedores.

Um ADS é um sistema computacional que provê suporte para o desenvolvimento,

reparo e melhorias em software, e para o gerenciamento e controle dessas atividades. Para tal,

um ADS contém um repositório com todas as informações relacionadas ao desenvolvimento

do projeto ao longo do seu ciclo de vida, além de ferramentas que oferecem o apoio às várias

atividades, técnicas e gerenciais, passíveis de automação que devem ser realizadas no projeto

(PASCUTTI, 2002). Um ADS deve preocupar-se em apoiar as atividades individuais e o

trabalho em grupo, o gerenciamento do projeto, o incremento da qualidade geral dos produtos

e o aumento da produtividade, permitindo o acompanhamento do projeto e a constatação, por

meio de informações obtidas ao longo do desenvolvimento, da evolução dos trabalhos

(PASCUTTI, 2002).

O DiSEN (Distributed Software Engineering Environment) é um Ambiente

Distribuído de Desenvolvimento de Software desenvolvido por um grupo de pesquisa do

Page 125: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

124

Departamento de Informática da Universidade Estadual de Maringá, cuja arquitetura foi

proposta, originalmente, em (PASCUTTI, 2002).

O DiSEN é um ambiente de desenvolvimento de software concebido para dar suporte,

inicialmente, à MDSODI (Metodologia de Desenvolvimento de Software Distribuído) e ao

trabalho cooperativo. Seu design incorpora também a tecnologia de agentes, de acordo com o

padrão estabelecido pela FIPA (Foundation for Intelligent Physical Agents). Vários trabalhos

já forma desenvolvidos no contexto do DiSEN, dentre os quais: (BATISTA, 2003),

(PEDRAS, 2003), (MORO, 2003), (LIMA, 2004), (POZZA, 2005), (ENAMI, 2006),

(WIESE, 2006) e (SCHIAVONI, 2007).

7.3 Requisitos Relevantes para um ADDS

Em se tratando de um ADDS, idealmente, é desejável que sua arquitetura atenda aos

seguintes requisitos:

• Armazenar, gerenciar, e garantir a segurança de dados e metadados de projetos de

desenvolvimento de software distribuídos geograficamente.

• Oferecer capacidade para incorporação de novos processos e métodos de gerenciamento

de projetos de software.

• Permitir que sejam adicionados, excluídos, configurados ou modificados componentes de

software e serviços de forma dinâmica.

• Atingir requisitos de desempenho e de confiabilidade necessários ao suporte ao

desenvolvimento integrado e cooperativo de software.

Espera-se que o DiSEN, em sua plenitude, ofereça apoio para as seguintes situações:

1. Ser integrado com ferramentas desenvolvidas em LPs diferentes [requisito de abertura]23.

2. Dar suporte ao uso de ferramentas CASE que apóiem o trabalho cooperativo entre

usuários distantes geograficamente.

3. Prover acesso ao desenvolvedor de diferentes locais24 – em casa, no aeroporto, etc.

[requisito de mobilidade] –, de modo a realizar tarefas tais como:

a) salvar artefato em sua casa (local) e, na seqüência, sincronizar, remotamente, com o

repositório localizado em um site do DiSEN;

b) sincronizar, remotamente, com o site do DiSEN e trabalhar sobre o artefato atualizado.

4. Ser integrado com bancos de dados diferentes [requisito de abertura];

23 A ser realizado em trabalhos futuros. 24 Local � site / endereço.

Page 126: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

125

5. Utilizar diferentes repositórios (CVSs) [requisito de abertura];

6. Prover suporte ao trabalho cooperativo, com as seguintes características:

a) percepção (awareness)25 – vide (POZZA, 2005);

b) comunicação via chat;

c) recursos de voz26.

7. Manter dados replicados em diferentes repositórios [requisito da tolerância a falhas];

8. Manter serviços – suporte a persistência, a local, a nomes, etc. – replicados em diferentes

hosts [requisito da tolerância a falhas];

9. Permitir a um usuário acessar dados ou serviços em outro host27, caso um host fique

inativo [requisito de tolerância a falhas].

10. Permitir que novas ferramentas externas (inclusive proprietárias, ou desenvolvidas por

terceiros) possam ser integradas ao ambiente [requisito de abertura]:

a) integração da execução;

b) integração dos artefatos – vide (WIESE, 2006).

11. Uma vez estabelecida a comunicação cliente-servidor, mediante a ocorrência de uma falha

de comunicação, um tratamento de falha é realizado conforme uma política pré-

estabelecida (ex.: possibilidade de replicação dos dados), de modo que:

a) um cliente poderá estar conectado a um servidor e outro conectado a outro servidor;

b) seja garantido o suporte ao CSCW: a percepção, a sincronização e a comunicação.

12. Resolver problemas relacionados à interdependência de serviços: ex.: se a máquina do

controle de acesso tornar-se inativa, isso implica na impossibilidade de acessar o serviço

de persistência [requisito da disponibilidade].

13. Instanciação dinâmica de servidores proporcionando o compartilhamento de dados de

projetos [requisito da escalabilidade].

14. Adicionar/distribuir serviços em novas máquinas, que poderão estar fisicamente no

mesmo local ou não [requisito da escalabilidade].

15. Ser flexível o suficiente para permitir que o gerente (local/projeto) estabeleça políticas de

funcionamento do sistema – ex.: desenvolvedor dá comando para o DiSEN salvar um

artefato, sem a necessidade de especificar o endereço de persistência [requisito de

transparência]: uma política que poderia ser estabelecida é que o artefato seja salvo

localmente e depois remotamente.

25 Pode ser conceituada como a contextualização das atividades individuais através da compreensão das atividades realizadas por outras pessoas. 26 A ser realizado em trabalhos futuros. 27 Host � máquina, estação de trabalho;

Page 127: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

126

7.4 Abordagem Arquitetural

A arquitetura do DiSEN, proposta por Pascutti (2002), baseia-se no estilo camadas, o

qual proporciona uma maior flexibilidade de desenvolvimento, organizando o sistema em

camadas hierárquicas. Uma camada pode ser definida como um conjunto de sub-sistemas com

o mesmo grau de generalidade. Tradicionalmente, as interações ocorrem somente entre

camadas adjacentes (GAMMA et al., 1995) (BUSCHMAN, 1996).

Figura 7.1 – Arquitetura do DiSEN proposta em (PASCUTTI, 2002)

Conforme ilustra a Figura 7.1, a arquitetura do DiSEN possui uma camada dinâmica

a qual permite, por exemplo, que sejam adicionados, excluídos, configurados ou modificados

componentes de software e serviços de forma dinâmica (em tempo de execução); uma

camada de aplicação de apoio à MDSODI, gerenciamento de workspace, gerenciamento de

agentes, contendo o(s) banco(s) de dados necessário(s) para armazenamento dos dados sobre

o ambiente (todas as informações geradas durante o desenvolvimento de software e as

informações da aplicação), bem como a base de conhecimento e, futuramente, as ontologias.

A camada de infra-estrutura será responsável pelo alicerce da arquitetura e oferecerá

suporte às tarefas de (i) persistência: deverá fornecer uma interface única para os acessarem

os vários mecanismos de persistência, tais como, bases de dados, bases de conhecimento e

simples arquivos; (ii) nomeação: deverá permitir que elementos possam referenciar e localizar

outros pelo nome, e (iii) concorrência: deverá assegurar ao banco de dados que um cliente por

vez tenha acesso a um registro ou arquivo – deve fazer o controle compartilhado, evitando

impasses (PASCUTTI, 2002).

Os elementos da arquitetura do DiSEN, proposta por (PASCUTTI, 2002), são: (a)

Supervisor de Configuração Dinâmica; (b) Gerenciador de Objetos; (c) Gerenciador de

Page 128: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

127

Workspace; (d) Gerenciador de Agentes; (e) Repositório; e (f) Canal de Comunicação. A

seguir, cada um desses elementos são brevemente destacados.

• O Supervisor de Configuração Dinâmica

Em um ADS distribuído, devem ser levadas em consideração duas questões chaves

(PASCUTTI, 2002): (i) é necessário considerar que um ambiente de desenvolvimento é

dinâmico em relação à sua arquitetura, ou seja, seus elementos, sua organização e suas

interconexões mudam durante a execução do sistema; (ii) deve ser considerado também que

novos serviços podem ser acrescentados ao ambiente também de forma dinâmica.

Portanto, o supervisor está subdividido em Supervisor de Configuração que terá como

tarefa básica o controle e gerenciamento da configuração do ambiente e Supervisor de

Serviços que deverá controlar e gerenciar os serviços que podem ser acrescentados ao

ambiente de forma dinâmica.

• O Gerenciador de Objetos

Uma das principais tarefas dos ambientes de desenvolvimento de software é

armazenar, estruturar e controlar, além do próprio software, os artefatos gerados durante o

desenvolvimento. Esses artefatos são, por natureza, mais complexos que os itens tratados por

sistemas de banco de dados tradicionais, pois são mais estruturados e requerem operações

complexas.

O Gerenciador de Objetos é constituído pelo gerenciador de acesso, gerenciador de

atividades, gerenciador de recursos, gerenciador de artefatos, gerenciador de projetos,

gerenciador de processos e gerenciador de versões e configurações – explicações detalhadas

sobre esses gerenciadores podem ser obtidas em (PASCUTTI, 2002).

• O Gerenciador de Workspace

O Gerenciador de Workspace deve prover funcionalidades para criar um ou mais

workspaces de um repositório sendo que, no caso do DiSEN, isso será feito através do canal

de comunicação e do suporte à tarefa de persistência. No caso mais simples, isso consiste em

copiar um arquivo simples, porém, mais freqüentemente, uma configuração inteira é copiada

do repositório para o workspace possibilitando ao desenvolvedor ter todos os módulos e

documentos necessários para o sistema à sua disposição, localmente. Assim, o desenvolvedor

não tem que decidir entre o que deve ser mantido globalmente no repositório e o que é

necessário localmente para carregar suas mudanças. Além disso, ele está isolado das

alterações das outras pessoas para o repositório – e outras pessoas estão isoladas das suas

Page 129: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

128

alterações. Isso significa que ele tem um controle completo do seu mundo e sabe exatamente

o que foi alterado e por que (PASCUTTI, 2002).

• O Gerenciador de Agentes

O gerenciador de agentes é responsável pela criação, registro, localização, migração e

destruição de agentes e compreende a Região de Agente (RA) e o Servidor de Ontologia, –

explicações detalhadas sobre esses dois elementos podem ser obtidas em (PASCUTTI, 2002).

• O Canal de Comunicação

De acordo com Pascutti (2002), o Canal de Comunicação é um elemento fundamental

da arquitetura, já que toda a comunicação entre os elementos constituintes da camada de

aplicação e da camada da infra-estrutura será realizada através desse canal. É constituído pelo

middleware e pelo middle-agent, sendo que, quando a comunicação envolver somente

objetos, esta será feita pelo middleware, e quando os agentes estiverem envolvidos, devido às

suas propriedades, a comunicação deverá ser gerenciada pelo middle-agent. Neste último

caso, além dos serviços convencionais de nomeação, por exemplo, outras propriedades devem

ser consideradas, tais como: colaboração, negociação, coordenação e mobilidade.

7.5 Representação Arquitetural do DiSEN

Nesta seção será apresentada uma representação arquitetural do DiSEN, considerando

tomando como base o tipo de visão componente-e-conector (C&C), conforme consta na Seção

3.4.4. Como a visão do tipo módulo é considerada essencial para compreensão do sistema por

parte dos stakeholders, foi incluída uma representação do tipo de visão módulos na Seção

7.5.1. Não foi disponibilizado neste trabalho qualquer visão do tipo alocação por estar além

do escopo deste trabalho. As visões do tipo C&C nesta seção estão representadas utilizando-

se a notação gráfica para uma ADL-OA proposta na Seção 6.5.

7.5.1 Uma Abordagem Arquitetural Convencional (não-OA)

A Figura 7.2 representa a arquitetura inicial do DiSEN, proposta por Pascutti (2002),

em uma visão de módulos, o que permite visualizar as inter-dependências entre os diversos

componentes arquiteturais, devido ao tipo de relacionamento típico desse tipo de visão, o

relacionamento depende-de.

Page 130: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

129

Figura 7.2 – Arquitetura inicial do DiSEN em uma visão de módulos

Como visto na Seção 3.4.3, um módulo implementa um conjunto de

responsabilidades. Portanto, esse tipo de elemento arquitetural não permite a análise do

sistema em tempo de execução, impedindo, por exemplo, analisar questões arquiteturais

relacionadas à configuração dinâmica do sistema. Contudo, é importante que essa visão seja,

inicialmente, apresentada de modo a permitir uma visão mais abrangente e simplificada do

sistema em questão.

Em uma visão C&C, a Figura 7.3 representa a arquitetura do DiSEN com base nos

seguintes elementos arquiteturais:

Page 131: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

130

Figura 7.3 – Arquitetura do DiSEN em uma visão C&C (componente-e-conector)

COMPONENTES:

• GUI: este componente destina-se a oferecer a interface de acesso aos usuários do DiSEN

(apesar do acrônimo GUI, em algumas circunstâncias, pode ser uma interface no modo

texto). Todo usuário do DiSEN necessita ter instalado este componente em sua estação de

trabalho.

• Supervisor de Configuração Dinâmica

• Aplicação: componente composto dos seguintes sub-componentes:

o Repositório, que classicamente podem ser constituídos de Sistemas Gerenciadores

de Banco de Dados e/ou de CVSs.

o Gerenciador de Objetos,

o Gerenciador de Workspace,

o Gerenciador de Agentes.

• Infra-estrutura: este componente engloba:

o Persistência,

o Nomeação,

o Concorrência,

o Canal de Comunicação.

Aplicação

C1

C3

C4

Infra-estrutura

C2

Supervisor de Configuração Dinâmica

GUI

Page 132: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

131

CONECTORES:

• C1: este conector provê a comunicação entre o componente GUI e os serviços fornecidos

pelo componente Supervisor de Configuração Dinâmica. A comunicação se dá mediante a

observância de regras e protocolos pré-definidos.

• C2: este conector permite a comunicação entre os serviços constituintes do componente

Supervisor de Configuração Dinâmica e os gerenciadores compreendidos no componente

Aplicação (de acordo com um conjunto de regras e protocolos previamente definidos).

• C3: provê a comunicação entre os gerenciadores compreendidos no componente

Aplicação e o componente Infra-estrutura.

• C4: há algumas situações que exigem que o componente GUI comunique diretamente com

o componente Aplicação. Para que essa comunicação seja viabilizada, o conector C4 se

faz necessário. Por exemplo, um determinado usuário do DiSEN pode necessitar

comunicar com outro usuário por meio do canal de comunicação, tendo a intermediação

do Gerenciador de Objetos.

Por meio de análise visual da Figura 7.3, é possível constatar que os componentes

Supervisor de Configuração Dinâmica, Aplicação e Infra-estrutura são elementos compostos,

pois os retângulos que os representam são formados por linhas duplicadas.

7.5.2 Uma Abordagem Arquitetural Orientada a Aspectos

Analisando o componente Infra-estrutura, vemos que ele compreende uma coleção de

serviços essenciais ao funcionamento de um sistema distribuído (Suporte à Tarefa de

Persistência, Suporte à Tarefa de Nomeação e Suporte à Tarefa de Concorrência). Conforme

proposto em (PASCUTTI, 2002), tal componente consiste, basicamente, em um middleware

(vide Figura 7.2). Sendo assim, a representação ideal para tal componente pode ser modelada

como mostra a Figura 7.4.

O middleware foi definido como uma entidade específica, dada a sua importância para

o contexto considerado no presente trabalho. Com isso, ela já carrega a informação de que o

elemento Infra-estrutura (Figura 7.4) é composto e, potencialmente, replicado.

Page 133: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

132

Figura 7.4 – Componente Infra-estrutura modelado na forma de um middleware.

Com base na aplicação do método ASAAM (TEKINERDOGAN, 2004), os seguintes

aspectos foram identificados na arquitetura do DiSEN: Persistência; Controle de Acesso;

Distribuição; Configuração Dinâmica (alguns dos quais constantes na Figura 7.5).

Pela Figura 7.5, é possível observar que a notação OA, proposta neste trabalho,

fornece recursos para modelar a replicação (indicada por retângulos sombreados) e a

mobilidade de componentes (indicada pela letra M), assim como a composição dinâmica

(linha do relacionamento na forma de raio). Por questões de distribuição, balanceamento de

carga, segurança, etc., os componentes Aplicação e Infra-estrutura poderão estar replicados e

a modelagem explícita dessa característica na representação arquitetural mostra-se bastante

útil.

Um usuário do DiSEN poderá necessitar locomover-se fisicamente com sua estação de

trabalho (por exemplo, durante uma viagem) e, ao mesmo tempo, continuar trabalhando em

algum projeto ao qual está vinculado. A modelagem desse requisito de sistema é muito útil

aos stakeholders. Um possível exemplo de componente que pode ser representado como tal é

o GUI, que traz consigo esta informação na notação correspondente, qual seja, a letra M.

Aplicação

C1

C3

C4

C2

Supervisor de Configuração Dinâmica

GUI

Infra-estrutura

Page 134: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

133

Figura 7.5 – Arquitetura do DiSEN em uma visão C&C em uma Abordagem OA.

A replicação dos serviços essenciais e de infra-estrutura é fundamental para garantir a

disponibilidade do ADDS. A composição dinâmica fica evidente pela própria replicação dos

componentes, pois se um componente ficar inativo, o aspecto correspondente (com o qual ele

se relaciona) deverá ser composto em tempo de execução.

A modelagem explícita da replicação tem a capacidade de indicar aos desenvolvedores

a possibilidade da re-configuração do sistema em tempo de execução.

Os relacionamentos representados por linhas na forma de raio, indicam que o aspecto

Controle de Acesso e Persistência serão compostos dinamicamente (isto é, durante a execução

do sistema) com os componentes com os quais eles se relacionam diretamente.

O componente composto Supervisor de Configuração Dinâmica pode ser expandido e

apresentar a configuração ilustrada na Figura 7.6 (o componente GUI, o aspecto Controle de

Acesso e o aspecto Persistência, foram incluídos com a finalidade de mostrar os

relacionamentos com seus sub-componentes).

GUI

M

C2

Controle de Acesso

C1 Persistência

Supervisor de Configuração Dinâmica

Aplicação

Infra-estrutura

Page 135: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

134

Figura 7.6 – Componente Supervisor de Configuração Dinâmica expandido

O Supervisor de Serviços controlará e gerenciará os serviços acrescentados ao

ambiente dinamicamente, enquanto o Supervisor de Configuração do ADS, basicamente,

controlará e gerenciará a configuração do ambiente. Ambos os componentes necessitam

realizar controles de acesso. O interesse controle de acesso encontra-se modularizado no

aspecto arquitetural Controle de Acesso. A linha na forma de raio indica que o aspecto

Controle e Acesso poderá ser composto em tempo de execução, dinamicamente.

Contudo, o problema da configuração dinâmica ainda não fica completamente

resolvido por meio da modelagem apresentada na Figura 7.6, pois muitos outros componentes

necessitam ter acesso aos serviços oferecidos pelo componente Supervisor de Configuração, e

o problema do entrelaçamento de interesses persiste.

A solução consiste em modelar tal componente na forma de uma aspecto arquitetural,

conforme mostra a Figura 7.7, de modo que o entrelaçamento arquitetural possa ser

amenizado, quando não for eliminado.

C1

Controle de Acesso

Supervisor de Configuração do ADS

Supervisor de Serviços

GUI

M

C2

Persistência

Page 136: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

135

Figura 7.7 – Componente Supervisor de Configuração modelado como um aspecto

Considerando que o componente Aplicação (vide Figura 7.3) está representado como

um componente composto (Repositório, Gerenciador de Objetos, Gerenciador de Workspace

e Gerenciador de Agentes) e replicado, vejamos o seguinte cenário, em tempo de execução:

• O repositório encontra-se replicado em três bases de dados, mantidas em locais

fisicamente distintos.

• O usuário grava os dados sem conhecer o endereço físico das bases de dados.

• É perdida uma determinada conexão entre um componente GUI e um host do DiSEN, no

qual se encontra localizada uma base de dados replicada e outros serviços essenciais.

Neste caso, o aspecto Supervisor de Configuração será encarregado de localizar outra

base de dados ativa e estabelecer as devidas conexões com os demais componentes do

sistema, em tempo de execução e de modo transparente ao usuário.

A situação esboçada acima ilustra um caso típico de re-configuração de um sistema

distribuído, atendendo plenamente ao requisito transparência. Os aspectos Serviço de Nomes

(Nomeação) e Controle de Acesso são imprescindíveis em situações como essas, pois uma

Supervisor de Serviços

GUI

M

C2

Serviço de Nomes

Supervisor de Configuração do ADS

Controle de Acesso

Page 137: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

136

nova configuração dependerá da localização dos componentes necessários assim como a

devida liberação de acesso a tais componentes.

7.6 Considerações

Pelo experimento realizado, foi possível constatar que a notação proposta é capaz de

sanar vários problemas relacionados à modelagem arquitetura de software do domínio de

sistemas distribuídos (vide Seção 2.4) , assim como satisfaz algumas necessidades oriundas da

abordagem orientada a aspectos.

No primeiro caso, é possível modelar explicitamente componentes compostos,

replicados, móveis e middlewares; além disso, permite modelar relacionamentos dinâmicos, a

fim de propiciar a evolução arquitetural em tempo de execução.

Vale ressaltar que os problemas da configuração dinâmica não se restringem apenas

aos casos de replicação de componentes, mas também estão presentes nos chamados sistemas

de missão crítica (ex.: sistemas bancários, controle de tráfego aéreo, controle de usinas

nucleares, telecomunicações, monitoramento de pacientes em tratamentos médicos). Tais

sistemas não podem ser desativados quando o código executável necessita ser atualizado (ex.:

correção de erros, implantação de novos componentes). Desse modo, a questão da

configuração dinâmica deve ser modelada preliminarmente, ou seja, em tempo de design

arquitetural, para permitir que os stakeholders envolvidos nas fases posteriores do ciclo de

vida possam ser comunicados sobre tal requisito.

Dentre as funcionalidades que uma ADL-OA deveria ter (vide Seção 5.5.1),

enumeradas por Navasa et al. (2002), apenas a especificação de conectores entre pontos de

junção e aspectos não se encontra contemplada pela notação gráfica proposta neste presente

trabalho.

Page 138: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

137

8 – Conclusões e Trabalhos Futuros

8.1 Conclusões

Ficou evidente, por este trabalho, que a incorporação dos conceitos provenientes do

DSOA em nível arquitetural é de grande valia ao desenvolvimento de sistemas de software.

Há na literatura uma lista de interesses transversais inerentes ao domínio de sistemas

distribuídos, e a abstração de aspectos arquiteturais é capaz de modularizar tais interesses,

resolvendo problemas relacionados à dispersão e ao entrelaçamento de interesses. Essa

solução atende prontamente ao princípio da separação de interesses (SoC – Separation of

Concerns).

No entanto, as ADLs convencionais não oferecem os recursos de modelagem

necessários para que os interesses transversais possam ser modularizados. As ADLs-OA

encontradas na literatura constituem-se em soluções que integram conceitos do DSOA com

elementos de ADL propostos no framework de Medvidovic e Taylor (2000). No entanto, tais

propostas são muito divergentes, dificultando um consenso acerca de quais conceitos,

provenientes da POA, realmente necessitam ser elevados a um nível arquitetural, de modo que

a modelagem de arquiteturas orientadas a aspectos torne-se uma tarefa factível. A lista de

características desejáveis em uma ADL-OA apresentada nesta dissertação, constitui-se em

uma contribuição para uma possível padronização.

O conjunto de diretrizes norteadoras, enunciadas no Capítulo 6, teve grande

importância na pesquisa e elaboração do elenco de características desejáveis em uma ADL-

OA apresentado. Tal conjunto serviu para orientar na decisão de quais características

deveriam de fato constar em uma ADL-OA. A proposta de notação visual apresentada neste

trabalho basicamente resultou do esforço realizado para atingir o conjunto das características

desejáveis em uma ADL-OA.

Em relação aos assuntos abordados sobre os tópicos de Sistemas Distribuídos,

Arquitetura de Software, ADL e DSOA, esta proposta cobre, conforme consta na Tabela 6.8,

quesitos como: Replicação; Mobilidade; Heterogeneidade; Transparência; Modelagem de

middlewares. Dinamismo Arquitetural; Refinamento Arquitetural; Modelagem preliminar, em

alto nível de abstração, das metas de projeto e de negócio. Formalidade na representação; Elo

entre o nível arquitetural e estágios subseqüentes; Meio de comunicação intra-equipes e inter-

equipes; Modelagem de interesses transversais em nível arquitetural; Modelagem e controle

da composição dinâmica.

Page 139: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

138

Possivelmente, alguns obstáculos poderão ser encontrados, principalmente em relação

à implementação das seguintes características em uma ferramenta de ADL-OA: Identificação

de Aspectos; Verificação do Design e da Implementação; Verificação do Estilo/Padrão; e

Rastreabilidade de Alterações. Tais características requerem um estudo mais aprofundado.

O presente trabalho diferencia-se dos demais, encontrados na literatura, pelo fato de

adotar uma abordagem top-down, partindo de preceitos gerais da Engenharia de Software até

atingir os conceitos da POA. Enquanto os demais (vide Seção 5.5) abordam questões

eminentemente técnicas, de caráter mais computacional, nesta dissertação, algumas questões

são enfatizadas a partir de uma perspectiva do arquiteto de software como ser humano, já que

toda ADL serve, fundamentalmente, como uma ferramenta conceitual para o desenvolvimento

de software numa das etapas mais preliminares do ciclo de vida do software. Além disso, vale

ressaltar que uma representação arquitetural pode ser objeto de análise por parte de

stakeholders leigos (ex.: usuários e clientes), os quais necessitam “visualizar” a arquitetura do

software de um modo bastante claro e simplificado, o que pode ser constatado na notação

gráfica proposta.

Por outro lado, em uma perspectiva de hardware, pode-se afirmar que o custo do

hardware tem reduzido bastante, quando comparado ao custo do software. Ademais, o

desenvolvimento de software é deveras muito mais complexo devido aos fatores humanos

envolvidos. Conseqüentemente, qualquer pesquisa no sentido de facilitar o desenvolvimento

de software com ênfase na minimização das complexidades inerentes ao ser humano é muito

bem vinda. Esta preocupação encontra-se presente em grande parte das diretrizes norteadoras

elencadas na Seção 6.2.

Não obstante esta preocupação referente às necessidades humanas dos usuários de uma

ADL, enfatizada neste trabalho, é salutar a preocupação com a minimização do uso de

recursos de hardware28, pois a sociedade global necessita preservar o meio ambiente em

vários sentidos: economizando energia (consumo de memória e processador, e uso de

displays) e poupando recursos naturais (material utilizado na fabricação de equipamentos).

A utilização de uma ADL eficaz contribui para a redução do tempo de

desenvolvimento, favorecendo, conseqüentemente, a economia de energia (devido à redução

do tempo que os equipamentos permanecerão ativos para dar suporte ao desenvolvimento).

Em tempo de execução, a construção de um software modelado por meio de uma ADL eficaz

28 Os recursos de hardware já não se constituem mais na preocupação central no desenvolvimento de projetos de software, devido à constante queda do seu custo comparado com o custo do software.

Page 140: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

139

tende a resultar em um software executável com melhor desempenho, consumindo menos

largura de banda, e mais fácil de ser mantido: gerando menos consumo de recursos de energia.

8.2 Trabalhos futuros

Uma pesquisa com a finalidade de verificar qual formalismo matemático é o mais

adequado para servir como fundamento para a especificação/definição da notação formal de

uma ADL-OA, constitui-se em um trabalho cujo campo pode ser bastante fértil. Na literatura,

ainda não se encontram disponíveis trabalhos comprovando quais recursos são

imprescindíveis, em uma notação formal, para a modelagem arquitetural de uma sistema

orientada a aspectos.

Como trabalho futuro principal, consta a elaboração de uma notação formal textual,

possivelmente, com base no π-Calculus, de modo que as análises formais possam ser

realizadas sobre as descrições arquiteturais modeladas por meio dessa notação. Somente após

a definição formal da notação, será possível implementar as características relacionadas ao

processo de design arquitetural e às ferramentas de apoio.

Um trabalho bastante interessante é a verificação da compatibilidade entre a notação

gráfica proposta e o formalismo matemático π-Calculus que servirá de base à ADL. Faz-se

necessário verificar se o formalismo π-Calculus oferece todos os recursos de modelagem

apresentados na notação gráfica proposta. Essa pesquisa validaria, formalmente, a notação

gráfica proposta, proporcionando-lhe consistência e a possibilidade de implementação em

uma ferramenta de ADL.

Outro trabalho futuro consiste na utilização do recurso Profile da UML a fim de

implementar a notação gráfica aqui proposta. A especificação precisa da notação visual, com

base na UML 2.0, é também um trabalho que dará suporte à construção de ferramentas de

apoio à ADL-OA. O uso de estereótipos da UML 2.0 pode dar condições para a especificação

de um profile para a notação visual proposta.

As características relacionadas às ferramentas de design arquitetural não puderam ser

verificadas durante o experimento devido ao fato de que seria necessário ter uma ferramenta

já implementada, e isso dependeria, também, da especificação da ADL por meio de um

formalismo matemático. Uma iniciativa poderia ser a utilização de alguma ADL extensível,

como, por exemplo, a proposta por Dashofy, Hoek e Taylor (2005), a fim de realizar a

implementação das características levantadas nesse trabalho.

Page 141: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

140

Da mesma forma, os itens relacionados à modelagem de configurações arquiteturais

listados no framework de Medvidovic e Taylor (2000) não puderam ser verificados, já que as

informações referentes às configurações arquiteturais são formalmente descritas em termos de

uma notação textual. Por exemplo, a especificação das restrições que representam as

dependências em uma configuração não pode ser completa e formalmente descrita em termos

de uma notação gráfica, pois, para tanto, é necessário que a sintaxe e a semântica da notação

textual da ADL estejam devidamente definidas.

Page 142: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

141

Referências

ABOWD, Gregory D.; ALLEN, Robert; GARLAN, David; Formalizing Style to Understanding Descriptions of Software Architecture, In ACM Transactions on Software Engineering and Methodology, vol. 4, no.4, pp. 319-364, Oct 1995.

ALDAWUD, Omar; ELRAD, Tzilla; BADER, Atef; UML Profile for Aspect-Oriented Software Development, In Omar Aldawud, editor, 3rd Workshop on Aspect-Oriented Modeling (AOM/AOSD’03), Boston, March 2003.

ALDRICH, Jonathan; CHAMBERS, Craig; NOTKIN, David; ArchJava: Connecting Software Architecture to Implementation, In Proceedings of the International Conference on Software Engineering (ICSE’02), May 19-25, Orlando, Published by ACM Press, pp. 187-197, 2002-a.

ALDRICH, Jonathan; Open Modules: Modular Reasoning about advice, In Proceedings of the European Conf. on Object-Oriented Programming (ECOOP’05), 144-168, July 2005.

ALLEN, Robert; GARLAN, David; A formal approach to software architectures, In Proceedings of the IFIP’92, Elsevier, pp. 134-141, September, 1992.

ALLEN, Robert; GARLAN, David; Formalizing Architectural Connection, In Proceedings of the 16th International Conference on Software Engineering, pp. 71-80, May 1994.

ALLEN, Robert; A Formal Approach to Software Architecture, Ph.D. Thesis, School of Computer Science, Carnegie Mellon University, CMU Technical Report CMU-CS-97-144, May 1997.

ALLEN, Robert; GARLAN, David; A Formal Basis for Architectural Connection, In ACM Transactions on Software Engineering and Methodology, Jul 1997.

ALLEN, Robert; DOUENCE, Rémi; GARLAN, David; Specifying and Analyzing Dynamic Software Architectures, In Proceedings of the 1998 Conference on Fundamental Approaches to Software Engineering, Lisbon, Portugal, Mar 1998.

ALLEN, Robert J.; GARLAN, David; IVERS, James; Formal Modeling and Analysis of the HLA Component Integration Standard, In Proceedings of the 6th International Symposium on Foundations of Software Engineering, Published by ACM Press, pp. 70-79, November 1998.

ANDREWS, Gregory; Paradigms for process interaction in distributed programs, In ACM Computing Surveys, vol. 23, no. 1, pp. 49-90, Mar 1991.

AOSD; Aspect Oriented Software Development Homepage, disponível em http://aosd.net, ultimo acesso em Julho de 2007.

BACHMANN, Felix; BASS, Len; KLEIN, Mark; SHELTON, C.; Designing software architectures to achieve quality attribute requirements, In IEE Proceedings -Software, vol. 152, no. 4, pp. 153- 165, August 2005.

BAKKER, Jethro; TEKINERDOĞAN, Bedir; AKSIT, Mehmet; Characterization of Early Aspects Approaches, In Proceedings of the Workshop on Early Aspects: Aspect-Oriented Requirements Engineering and Architecture Design (with AOSD’05), 2005.

BANIASSAD, Elisa L. A.; CLARKE, Siobhán; Theme: An Approach for Aspect-Oriented Analysis and Design, In Proceedings of the 26th International Conference on Software Engineering (ICSE’04), Edinburgh, Scotland, Published by IEEE Computer Society Press, pp. 158-167, May 2004.

BANIASSAD, Elisa; CLEMENTS, Paul C.; ARAÚJO, João; MOREIRA, Ana; RASHID, Awais; TEKINERDOGAN, Bedir; Discovering Early Aspects, In IEEE Software, v. 23, n. 1, pp. 61-70, Jan-Feb 2006.

BARAIS, O.; CARIOU, E.; DUCHIEN, L.; PESSEMIER, N.; SEINTURIER, L.; TranSAT: A Framework for the Specification of Software Architecture Evolution, Presented at Workshop on Coordination and Adaptation Techniques for Software Entities (ECOOP’2004), Oslo, Norway, 2004.

Page 143: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

142

BASS, Len; CLEMENTS, Paul; KAZMAN, Rick; Software Architecture in Practice, Addison-Wesley, 1998.

BASS, L.; CLEMENTS, P.; KAZMAN, R.; Software Architecture in Practice, 2nd ed., Addison-Wesley, 2003.

BASS, Len; KLEIN, Mark; NORTHROP, Linda; Identifying Aspects Using Architectural Reasoning, Publishe by IEEE Software, 2004.

BATISTA, Sueleni Mendez; Uma ferramenta de apoio à fase de requisitos da mdsodi no contexto do ambiente DiSEN, Dissertação de Mestrado – Programa de Pós-Graduação em Informática, Universidade Federal do Paraná, Curitiba, 2003.

BATISTA, Thais; CHAVEZ, Christina; GARCIA, Alessandro; SANT’ANNA, Cláudio; KULESZA, Uirá; RASHID, Awais; COSTA FILHO, Fernando; Aspectual Connectors: Supporting the Seamless Integration of Aspects and ADLs, In Proceedings of the ACM SIGSoft XX Brazilian Symposium on Software Engineering (SBES’06), Florianópolis, Brazil, Oct 2006-a.

BATISTA, Thais; CHAVEZ, Christina; GARCIA, Alessandro; SANT’ANNA, Cláudio; KULESZA, Uirá; RASHID, Awais; COSTA FILHO, Fernando; Reflections on Architectural Connections: Seven Issues on Aspects and ADLs, In Proceedings of the EA’06, May 21, Shangay, Published by ACM Press, 2006-b.

BLINN, P.; VESTAL, S.; Formal real-time architecture specification and analysis, Pres. at 10th IEEE Workshop on Real-Time Operating Systems and Software, May 1993.

BOEHM, Barry W.; Software Engineering Economics, Prentice Hall, 1991.

BOEHM, Barry; IN, Hoh; Identifying Quality-Requirement Conflicts, Published in IEEE Software, vol. 13, no. 2, p. 25-35, March 1996.

BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar; UML: guia do usuário, 2a ed. rev. e atualiz. – Rio de Janeiro: Elsevier, 2005.

BRITO, I.; MOREIRA, A.; Integrating the NFR framework in a RE model, In Proceedings of 3rd Workshop on Early Aspects, 3rd International Conference on Aspect-Oriented Software Development, March 2004.

BUSCHMANN, Frank; MEUNIER, Regine; ROHNERT, Hans; SOMMERLAND, Peter; STAL, Michael; Pattern-Oriented Software Architecture: a system of patterns, reprinted April 1999 - Chichester-UK: John Wiley & Sons, 1996.

CHAVEZ, C.; GARCIA, A.; KULESZA, U.; SANT’ANNA, C.; LUCENA, C.; Crosscutting Interfaces for Aspect-Oriented Modeling, PUC-Rio, Rio de Janeiro, Brazil, Technical Report TR-23-05, March 2005.

CHITCHYAN, Ruzanna; RASHID, Awais; SAWYER, Peter; GARCIA, Alessandro (ULANC); PINTO Alarcon, Mónica; (UMA); BAKKER, Jethro; TEKINERDOGAN, Bedir (UT); CLARKE, Siobhán; JACKSON, Andrew (TCD), Survey of Aspect-Oriented Analysis and Design Approaches, AOSD-Europe-ULANC-9, AOSD-Europe Network of Excellence, University of Lancaster, May 2005.

CLELAND, D. I.; IRELAND, L. R.; Gerência de Projetos, Rio de Janeiro: Reichmann & Affonso, 2002.

CLEMENTS, Paul; A Survey of Architecture Description Languages, In Proceedings of the Eighth International Workshop on Software Specification and Design, Paderborn, Germany, Mar 1996.

CLEMENTS, Paul; KAZMAN, Rick; KLEIN, Mark; Evaluating software architectures: methods and case studies, CMU-SEI – Boston: Addison-Wesley, 2002.

CLEMENTS, P.; NORTHROP, L.; Software Product Lines: Practices and Patterns, Addison-Wesley, 2002.

Page 144: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

143

CLEMENTS, Paul; BACHMANN, Felix; BASS, Len; GARLAN, David; IVERS, James; LITTLE, Reed; NORD, Robert; STAFFORD, Judith; Documenting software architectures: views and beyond, CMU-SEI – Boston: Addison-Wesley, 2003.

COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim; Sistemas Distribuídos: conceitos e projeto, 4a ed. – Porto Alegre: Bookman, 2007.

CUESTA, Carlos E.; del PILAR Romay, María; de la FUENTE, Pablo; BARRIO Solórzano, Manuel; Architectural Aspects of Architectural Aspects, In Proceedings of the 2nd European Workshop on Software Architecture: (EWSA’05), Pisa, Italy, LNCS 3527, pp. 247-262, Jun 13-14, 2005-a.

DASHOFY, Eric M.; MEDVIDOVIC, Nenad; TAYLOR, Richard N.; Using Off-The-Shelf Middleware to Implement Connectors in Distributed Software Architectures, In Proceeding of the International Conference on Software Engineering (ICSE’99), Los Angeles, ACM Press, pp. 3-10, May 16-22, 1999.

DASHOFY, Eric M.; van der HOEK, André; TAYLOR, Richard N.; A Highly-Extensible, XML-Based Architecture Description Language, In Proceedings of the Working IEEE/IFIP Conference on Software Architecture (WICSA’01), pp.103-112, IEEE CS Press, Aug 28-31, 2001.

DASHOFY, Eric M.; van der HOEK, André; TAYLOR, Richard N.; A Comprehensive Approach for the Development of Modular Software Architecture Description Languages, In ACM Transactions on Software Engineering and Methodology, vol. 14, no. 2, pp. 199-245, Apr 2005.

DEREMER, Frank; KRON, Hans; Programming-in-the-Large versus Programming-in-the-small, In Proceedings of the International Conference on Reliable Software, ACM Press, pp. 114-121, 1975.

DIJKSTRA, E. W.; The Structure of the THE Multiprogramming System, Published in Communications of ACM, 1968.

EMMERICH, Wolfgang; Engineering Distributed Objects, Reprinted August 2001, Chichester, England: John Wiley & Sons, 2000.

ENAMI, Lúcia Norie Matsueda; Um modelo de gerenciamento de projetos para um ambiente de desenvolvimento distribuído de software, Dissertação de Mestrado, Programa de Pós-Graduação em Ciência da Computação, Universidade Estadual de Maringá, Maringá, 2006.

FIDGE, C. J.; Timestamps in message-passing systems that preserve the partial ordering, In Australian Computer Science Comm. vol. 10, no. 1, pp. 55-66, Feb 1988.

FREIRE, Paulo; A Importância do Ato de Ler: em três artigos que se completam, 45ª ed., Cortez: São Paulo, 2003.

GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J.; Design Patterns: Elements of Reusable Object-Oriented Software, Mass: Addison-Wesley, 1995.

GARCIA, Alessandro; From Objects to Agents: An Aspect-Oriented Approach, PhD Thesis, Department of Computer Science, PUC-Rio, Brazil, 2001.

GARCIA, Alessandro; CHAVEZ, Christina; SOARES, Sérgio; PIVETA, Eduardo; PENTEADO, Rosângela; de CAMARGO, Valter; FERNANDES, Fabrício; Relatório do 1º Workshop Brasileiro sobre Desenvolvimento de Software Orientado a Aspectos – WASP 2004, In Proceedings of 1st the Workshop Brasileiro sobre Desenvolvimento de Software Orientado a Aspectos (WASP’2004), SBES, Brasília, Brasil, 2004.

GARCIA, Alessandro; KULESZA, Uirá; SANT’ANNA, Cláudio; CHAVEZ, Christina; de LUCENA, Carlos J. P.; Aspects in Agent-Oriented Software Engineering: Lessons Learned, Presented at Workshop on Agent-Oriented Software Engineering (held with AAMAS’05), Utrecht, The Netherlands, Jul 2005.

GARCIA, Alessandro; CHAVEZ, Christina; BATISTA, Thaís; SANT'ANNA, Cláudio; KULESZA, Uirá; RASHID, Awais; de LUCENA, Carlos; Driving and Managing Architectural Decisions with

Page 145: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

144

Aspects, Presented at SHARK’06 (held with ICSR’06 Conference), Turin, Italy, ACM Press, Jun 11, 2006-a.

GARCIA, Alessandro; CHAVEZ, Christina; BATISTA, Thaís; SANT'ANNA, Cláudio; KULESZA, Uirá; RASHID, Awais; de LUCENA, Carlos; On the Modular Representation of Architectural Aspects, In Proceedings of the 3rd European Workshop on Software Architecture, France, Sep 2006-b.

GARLAN, David; ALLEN, Robert; OCKERBLOON, J.; Exploiting Style in Architectural Design Environments, In Proceedings of the SIGSOFT’94: The 2nd ACM SIGSOFT Symp. Foundations of Software Engineering, pp. 179-185, New Orleans, Dec 1994.

GARLAN, David; MONROE, Robert; WILE, David; Acme: An Architecture Description Interchange Language, In Proceedings of the CASCON’97, Ontario, Published by ACM Press, pp. 169-183, Nov 1997.

GARLAN, David; MONROE, Robert; WILE, David; Acme: Architectural Description of Component-Based Systems, In Foundations of Component-Based Systems, Gary T. Leavens and Murali Sitaraman (eds.), pp. 47-68, Cambridge University Press, 2000.

GARLAN, David; SHAW, Mary; An Introduction to Software Architecture, In Advances in Software Engineering and Knowledge Engineering, Volume I, 39 pp., V. Ambriola and G. Tortora (eds.), World Scientific Publishing Company, New Jersey, 1993.

GARLAN, David; SHAW, Mary; An Introduction to Software Architecture, CMU-CS-94-166 TR, Jan 1994.

GARLAN, David; PERRY, Dewayne; Introduction to the Special Issue on Software Architecture, In IEEE Transactions on Software Engineering, vol. 21, no. 4, pp. 269-274, 1995.

GIMENES, Itana M. S.; HUZITA, Elisa H. M.; (orgs.) Desenvolvimento baseado em componentes: conceitos e técnicas, Rio de Janeiro: Ciência Moderna, 2005.

GORLICK, M. M.; RAZOUK, R. R.; Using Weaves for Software Construction and Analysis, In Proceedings of the 13th International Conference on Software Engineering (ICSE’91), pp. 23-34, Austin, May 1991.

GRUHN, Volker; SCHÄFER, Clements; An Architecture Description Language for Mobile Distributed Systems, In Proceedings of the 1st European Workshop on Software Architecture (EWSA’04), St. Andrews, Scotland, UK, May 21-22, Published by Springer-Verlag, Heidelberg, pp. 212-218, 2004.

GRUHN, Volker; SCHÄFER, Clements; Architecture Description for Mobile Distributed Systems, In Proceedings of the 2nd European Workshop on Software Architecture (EWSA’05), Pisa, Italy, June 13-14, Published in LNCS 3527, 2005.

HERBSLEB, James D.; MOITRA, Deependra; Global Software Development, Guest Editors’ Introduction, IEEE Software, pp. 16-20, Mar/Apr, 2001.

HERZUM, P.; SIMS, O.; Buziness Component Factory: a comprehensive overview of component-based development for enterprise, John-Wiley & Sons, 2000.

HOARE, C. A. R.; Communicating Sequential Processes, In Communications of ACM, vol. 21, no. 28, pp. 666-677, 1978.

HOFMEISTER, C.; NORD, R. L.; SONI, D.; Applied Software Architecture, Addison-Wesley, 1999.

HUZITA, Elisa Hatsue Moriya; Suporte à Reutilização em Ambientes Distribuídos de Desenvolvimento de Software. Projeto em andamento (CNPq). Projeto de pesquisa em andamento, Universidade Estadual de Maringá. Departamento de Informática, 2007.

IEEE; IEEE Standard 1471-2000, IEEE Recommended Practice for Architectural Description of Software-Intensive Systems, IEEE Press, 2000.

Page 146: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

145

IEEE; IEEE Standard 610.12-1990, IEEE Press, 1990.

ISO; ISO/IEC 14102-1995 Information Technology, Guideline for the Evaluation and Selection of CASE Tools, 1995.

KANDÉ, M. M.; A concern-oriented approach to software architecture, In Computer Science, vol. PhD, Lausanne, Switzerland: Swiss Federal Institute of Technology (EPFL), 2003.

KAZMAN, Rick; BASS, Len; ABOWD, Gregory; WEBB, Mike; SAAM: A Method for Analyzing the Properties of Software Architectures, In Proceedings of the 16th International Conference on Software Engineering (ICSE’94), Published by IEEE CS Press, pp. 81-90, May 16-21, 1994.

KAZMAN, R.; ABOWD, G.; BASS, L.; CLEMENTS, P.; Scenary-Based Analysis of Software Architecture, In IEEE Software, vol. 13, no. 6, pp.47-55, Nov 1996.

KHARE, Rohit; GUNTERSDORFER, Michael; OREIZY, Peyman; MEDVIDOVIC, Nenad; TAYLOR, Richard N.; xADL: Enabling Architecture-Centric Tool Integration With XML, In Proceedings of the 34th Hawaii International Conference on System Sciences, 9 pp., Jan 3-6, 2001.

KICZALES, G.; LAMPING, J.; MENDHEKAR, A.; MAEDA, C.; LOPES, C.; LOINGTIER, J. M.; IRWIN, J.; Aspect-Oriented Programming, In Proceedings of the ECOOP’97 - Object-Oriented Programming, 11th European Conf., LNCS 1241, pp. 220-242, 1997.

KICZALES, G.; HILSDALE, E.; HUGUNIN, J.; KERSTEN, M.; PALM, J.; GRISWOLD, W. G.; An overview of AspectJ, In Proceedings of the European Conference on Object-Oriented Programming, Budapest, Hungary, pp. 18-22, Jun 2001.

KICZALES, Gregor; MEZINI, Mira; Aspect-Oriented Programming and Modular Reasoning, In: Proc. of the International Conference on Software Engineering (ICSE’05), St. Louis, Missouri, USA, May 15-21, 2005.

KOGUT, P.; CLEMENTS, P. C.; Features of Architecture Description Languages, CMU/SEI Technical Report Draft, December 1994.

KRUCHTEN, Philippe; Architectural Blueprints - The ‘4+1’ View Model of Software Architecture, In IEEE Software, vol. 12, no. 6, pp. 42-50, Nov 1995.

KRUCHTEN, Philippe; OBBINK, Henk; STAFFORD, Judith; The Past, Present, and Future of Software Architecture, In IEEE Software, vol. 22, no. 2, pp. 22-30, Mar-Apr 2006.

KULESZA, U.; GARCIA, A.; LUCENA, C.; Generating Aspect-Oriented Agent Architectures, In Proceedings of the 3rd Workshop on Early Aspects (held with AOSD’04), Mar 2004-a.

KULESZA, U.; GARCIA, A.; LUCENA, C.; von STAA, A.; Integrating Generative and Aspect-Oriented Technologies, presented at 19th ACM SIGSoft Brazilian Symposium on Software Engineering, Brasília, 2004-b.

LAMPSON, B. W.; Hints for Computer System Design, In IEEE Software, vol. 1, no. 1, pp. 11-28, Jan 1984.

LEA, Doug; ALEXANDER, Christopher; An Introduction for Object Oriented Designers, In ACM SIGSOFT Software Engineering Notes, vol. 19 no. 1, pp. 39-46, Jan 1994.

LICHTNER, Kurt; ALENCAR, Paulo; COWAN, Don; An Extensible Model of Architecture Description, In Proccedings of the SAC’00, Como, Italy, Published by ACM, pp. 156-165, Mar 19-21, 2000.

LIMA, Fabiana; Mecanismos de Apoio ao Gerenciador de Recursos Humanos no Contexto de um Ambiente Distribuído de Software, Dissertação de Mestrado – Programa de Pós-Graduação em Ciência da Computação, Univ. Estadual de Maringá, Maringá, 2004.

LUCKHAM, David C.; KENNEY, John; AUGUSTIN, Larry; VERA, James; BRYAN, Doug; MANN, Walter; Specification and Analysis of System Architecture Using Rapide, In IEEE Transactions on Software Engineering, vol. 21, no. 4, pp. 336-355, Apr 1995.

Page 147: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

146

LUCKHAM, David C.; VERA, James; An Event-Based Architecture Definition Language, In IEEE Transactions on Software Engineering, vol. 21, no. 9, pp. 717-734, Sep 1995.

MAGEE, J.; DULAY, N.; EISENBACH, S.; KRAMER, J.; Specifying Distributed Software Architectures, In W. Schafer and P. Botella (eds.), In Proceedings of the 5th European Software Engineering Conference (ESEC’95), Springer-Verlag, pp. 137-153, Sep 1995.

MAGEE, J.; KRAMER, J.; Dynamic Structure in Software Architectures, In Proc. of ACM SIGSOFT’96: 4th Symposium on the Foundations of Software Engineering (FSE4), pp. 3-14, San Francisco, CA, Oct 1996.

MEDVIDOVIC, N.; OREIZY, P.; ROBBINS, J. E.; TAYLOR, R. N.; Using Object-Oriented Typing to Support Architectural Design in the C2 Style, In Proceedings of ACM SIGSOFT’96: 4th Symposium on the Foundations of Software Engineering (FSE4), pp. 24-32, San Francisco, CA, Oct 1996.

MEDVIDOVIC, N.; ROSENBLUM, D. S.; Domains of Concern in Software Architectures and Architecture Description Languages, In Proceedings of the USENIX Conference on Domain-Specific Languages, pp. 199-212, Santa Barbara, CA, Oct 1997.

MEDVIDOVIC, Nenad; ROSENBLUM, David S.; TAYLOR, Richard N.; A Language and Environment for Architecture-Based Software Development and Evolution, In Proc. of the 1999 International Conference on Software Engineering (ICSE’99), Los Angeles, Published by ACM Press, pp. 44-53, May 16-22, 1999.

MEDVIDOVIC, Nenad; TAYLOR, Richard N.; A Framework for Classifying and Comparing Architecture Description Languages, In Proceedings of 6th European Software Engineering Conference, LNCS vol. 1301, pp. 60-76, Sep 1997.

MEDVIDOVIC, N.; TAYLOR, R.; A Classification and Comparison Framework for Software Architecture Description Languages, In IEEE Transactions on Software Engineering, vol. 26, no. 1, pp.70-93, Jan 2000.

MEDVIDOVIC, Nenad; ROSENBLUM, David S.; REDMILES, David F.; ROBBINS, Jason E.; Modeling Software Architecture in the Unified Modeling Language, In ACM Trans. on Software Engineering and Methodology, vol. 11, no. 1, pp.2-57, Jan 2002.

MEDVIDOVIC, Nenad; DASHOFY, Erich M.; TAYLOR, Richard N.; The Role of Middleware in Architecture-Based Software Development, In International Journal of Software Engineering and Knowledge Engineering, vol. 13, no. 4, pp. 267-393, World Scientific Publishing Company, 2003.

MIKIC-RAKIK, Marija; MEDVIDOVIC, Nenad; A Connector-Aware Middleware for Distribution Deployment and Mobility, In Proceedings of the 23rd International Conference on Distributed Computing Systems Workshops (ICDCSW’03), IEEE Software Press, pp. 388-393, May 19-22, 2003.

MILLER, George; The magical number seven, plus minus two: some limits on our capacity for processing information, Psychological Review, vol. 63, pp. 81-97.

MILLS, John A.; A Pragmatic View of the System Architect, In Communications of ACM, vol. 28, no. 7, pp. 708-717, July 1985.

MILNER, R.; PARROW, J.; WALKER, D.; A calculus of mobile process, Parts I and II, Journal of Information and Computation, vol. 100, pp. 1-40 and pp. 41-77, 1992.

MONROE, Robert T.; KOMPANEK, Andrew; MELTON, Ralph; GARLAN, David; Architectural Styles, Design Patterns, and Objects, In IEEE Software, vol. 14, no. 1, pp. 43-52, Jan-Feb 1997.

MORICONI, M.; QIAN, X.; RIEMENSCHNEIDER, R. A.; Correct Architecture Refinement, Published in IEEE Transactions on Software Engineering, vol. 21, no. 4, pp. 356-372, Apr 1995.

Page 148: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

147

MORO, César Fernado; Suporte à persistência de artefatos para o ambiente distribuído de desenvolvimento de software DiSEN, Dissertação de Mestrado – Programa de Pós-Graduação em Informática, Univ. Federal do Paraná, Curitiba, 2003.

NAVASA, Amparo; PÉREZ, Miguel Angel; MURILLO, Juan Manuel; HERNÁNDEZ, J. Aspect-Oriented Software Architecture: a Structural Perspective, Workshop on Early Aspect, (held with AOSD’02), Enschede, Holland, 2002.

NAVASA, Amparo; PÉREZ, Miguel Angel; MURILLO, Juan Manuel; Aspect Modelling at Architecture Design, In Proceedings of the 2nd European Workshop on Software Architecture (EWSA’05), Pisa, Italy, LNCS 3527, Jun 13-14, 2005.

NII, H. P.; Blackboard Systems, AI Magazine, vol. 7, no. 3, pp. 38-53, 1986, vol. 7, no. 4, pp. 82-107, 1986.

OMG; Object Management Group, disponível em http://www.omg.org/, último acesso em Julho de 2007.

OQUENDO, Flavio; ππππ-ADL: An Architecture Description Language based on the Higher-Order Typed ππππ-Calculus for Specifying Dynamic and Mobile Software Architectures, In ACM Software Engineering Notes, vol. 29, no. 5, 14 pp., May 2004.

OQUENDO, F.; Formally Modelling Software Architectures with the UML 2.0 Profile for ππππ-ADL, In ACM SIGSOFT Software Engineering Notes, vol. 31, no. 1, 13 pp., Jan 2006.

OREISY, P.; MEDVIDOVIC, N.; TAYLOR, R. N.; Architecture-Based Runtime Software Evolution, In Proceedings of the 20th Intern. Conference on Software Engineering (ICSE’98), pp. 177-186, Kyoto, Apr 1998.

OSSHER, H.; TARR, P.; Multi-Dimensional Separation of Concerns and The Hyperspace Approach, In Proceedings of the Symposium on Software Architectures and Component Technology: The State of the Art in Software Development, Kluwer, 2000.

PARNAS, David Lorge; On the Criteria to Be Used in Decomposing Systems into Modules, Communications of ACM, vol. 15, no.12, pp.1053-1058, Dec. 1972.

PARNAS, D.; On a ‘Buzzword’: Hierarchical Structure, In Proc. of the IFIP Congress 74, pp. 336-339, 1974.

PARNAS, David Lorge; On the Design and Development of Program Families, IEEE Transactions on Software Engineering, vol. 2, no.1, pp.1-9, Mar 1976.

PARNAS, D.; CLEMENTS, P.; WEISS, D.; The Modular Structure of Complex Systems, In IEEE Trans. on Software Engineering, vol. SE-11, no. 3, pp. 259-266, Mar 1985.

PARNAS, D.; CLEMENTS, P.; A Rational Design Process: How and Why to Fake It, In IEEE Transactions on Software Engineering, vol. 12, no. 2, pp. 251-257, 1986.

PASCUTTI, Márcia C. D.; Uma Proposta de Arquitetura de um Ambiente de Desenvolvimento de Software Distribuído Baseada em Agentes, Dissertação de Mestrado, Instituto de Informática, Univ. Federal do Rio Grande do Sul, Porto Alegre, 2002.

PAWLAK, R.; SEINTURIER, L.; DUCHIEN, Lionel; FLORIN, G.; LEGOND-AUBRY, F.; MARTELLI, L.; JAC: an Aspect-based Distributed Dynamic Framework, Software – Practice and Experience, vol. 34, pp. 1119-1148, 2004.

PEDRAS, Maria Edith V.; Uma Ferramenta de Apoio ao Gerenciamento de Desenvolvimento de Software Distribuído, Dissertação de Mestrado – Programa de Pós-Graduação em Informática, Universidade Federal do Paraná, Curitiba, 2003.

PÉREZ Benedí, Jennifer; RAMOS, Isidro; JAÉN, J.; Patricio; NAVARRO, Elena; PRISMA: Towards Quality, Aspect-Oriented and Dynamic Software Architectures, In Proceedings of the 3rd IEEE International Conference on Quality Software (QSIC’2003), Dallas, Nov 2003.

Page 149: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

148

PÉREZ Benedí, Jennifer; ALI, Nour; Angel; CARSÍ, José; RAMOS, Isidro; Dynamic Evolution in Aspect-Oriented Architectural Models, In R. Morrison and F. Oquendo (eds), In Proceedings of the 2nd European Workshop on Software Architecture (EWSA’05), LNCS, Pisa, Jun 2005.

PÉREZ, Jennifer; NAVARRO, Elena; LETELIER, Patricio; RAMOS, Isidro; Graphical Modelling for Aspect Oriented SA, In Proc. of the SAC’06, Dijon, France, Published by ACM Press, pp. 597-598, Apr 23-27, 2006.

PERRY, Dewayne E.; WOLF, Alexander L.; Foundations for the Study of Software Architecture, In ACM Software Engineering Notes, vol. 17, no. 4, pp. 40-52, Oct 1992.

PESSEMIER, N.; SEINTURIER, L.; DUCHIEN, L.; Components, ADL and AOP: Towards a Common Approach, Presented at Workshop ECOOP Reflection, AOP and Meta-Data for Software Evolution (RAM-SE’04), Jun 2004.

PESSEMIER, N.; SEINTURIER, L.; COUPAYE, T.; DUCHIEN, L.; A Model for Developing Component-based and Aspect-Oriented Systems, In Proceedings of the 5th International Symposium on Software Composition (SC’06), Vienna, Mar 2006.

PINTO, Monica; FUENTES, Lidia; FAYAD, M. E.; TROYA, J. M.; Towards an Aspect-Oriented Framework in the Design of Collaborative Virtual Environments, In Proceedings of the 8th IEEE Workshop on FTDCS’01, Nov 2001.

PINTO, Monica; FUENTES, Lidia; FAYAD, M. E.; TROYA, J. M.; Separation of Coordination in a Dynamic Aspect-Oriented Framework, In Proc. of the 1st International Conference on AOSD’02, Apr 2002.

PINTO, Monica; FUENTES, Lidia; TROYA, J. M.; DAOP-ADL: An Architecture Description Language for Dynamic Component and Aspect-Based Development, In Proceedings of the 2nd International Conference on GPCE, F. Pfenning and Y. Samaradakis (eds.), Erfurt, LNCS, vol. 2830, Springer-Verlag, pp. 118-137, 2003.

PINTO, Monica; FUENTES, Lidia; TROYA, J. M.; A Dynamic Component and Aspect Platform, The Computer Journal, 401-420, 2005.

POZZA, Rogério dos Santos; Proposta de um Framework para Aspectos do Gerenciador de Workspace no Ambiente DiSEN, Dissertação de Mestrado – Programa de Pós-Graduação em Ciência da Computação, Univ. Estadual de Maringá, Maringá, 2005.

PRESSMAN, Roger S., Engenharia de Software, 6a ed. – São Paulo: McGraw-Hill, 2006.

RAJAN, H.; SULLIVAN, K.; Classpects: Unifying Aspect- and Object-Oriented Language Design, In Proceedings of the ICSE’2005, USA, 2005.

RASHID, A.; MOREIRA, A.; ARAÚJO, J.; Modularization and composition of aspectual requirements, In Proc. of the 2nd Intern. Conference on Aspect-oriented Software Development, pp. 11-20, ACM Press, 2003.

ROBBINS, Jason E.; REDMILES, David F.; ROSENBLUM, David S.; Integrating C2 with the Unified Modeling Language, In Proceedings of the California Software Symposium (CSS’97), Irvine, Nov 1997.

SCHMIDT, Douglas C.; STAL, Michael; ROHNERT, Hans; BUSCHMANN, Frank; Pattern-Oriented Software Architecture: patterns for concurrent and networked objects, reprinted April 2001 – Chichester: John Wiley & Sons, 2000.

SCHIAVONI, Flávio Luiz; FRADE – Framework para infra-estrutura de um Ambiente Distribuído de Desenvolvimento de Software, Dissertação de Mestrado – Programa de Pós-Graduação em Ciência da Computação, Universidade Estadual de Maringá, Maringá, 2007.

SEBESTA, Robert W.; Conceitos de Linguagens de Programação, 5ª ed. – Porto Alegre: Bookman, 2003.

Page 150: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

149

SEI; Software Engineering Institute Web Site, disponível em www.sei.cmu.com.edu, ultimo acesso em 20/11/2006.

SELIC, B.; The Pragmatics of Model-Driven Development, In IEEE Software, vol. 20, n. 5, pp. 19-25, 2003.

SHAW, Mary; Abstraction Techniques In Modern Programming Languages, In IEEE Software, vol. 1, no. 4, pp. 10-26, Oct 1984.

SHAW, Mary; Toward Higher-Level Abstractions for Software Systems, In Proceedings of Tercer Simposio Internacional del Conocimiento y su Ingerieria, (printed by Rank Xerox) (invited), pp.55-61, Oct 1988.

SHAW, Mary; Elements of a Design Language for Software Architecture, Position Paper for IEEE Design Automation Workshop, January 1990.

SHAW, Mary; Heterogeneous Design Idioms for Software Architecture, In Proceedings of the 6th International Workshop on Software Specification and Design, pp. 158-165, IEEE Press, Oct 1991.

SHAW, Mary; Making Choices: A Comparison of Styles for Software Architecture, In IEEE Software, Special Issue on Software Architecture, vol. 12, no. 6, pp. 27-41, 1995.

SHAW, Mary; The Coming-of-Age of Software Architecture Research, In Proceedings of the 23rd International Conference on Software Engineering (ICSE’01), Published by IEEE CS Press, pp. 657-664, 2001.

SHAW, M.; GARLAN, D.; Characteristics of Higher-Level Languages for Software Architecture, Tech. Report, CMU-CS-94-210, Carnegie Mellon University, Dec 1994.

SHAW, M.; GARLAN, D.; Formulations and Formalisms in Software Architecture, Jan van Leeuwen, editor, Computer Science Today: Recent Trends and Developments, vol. 1000, LNCS, Springer-Verlag, 1995.

SHAW, M.; GARLAN, D.; Software Architectures: Perspectives on an Emerging Discipline, Englewood Cliffs, NJ: Prentice-Hall, 1996.

SHAW, M.; DELINE, R.; ZELESNIK, G.; Abstractions and Implementations for Architectural Connections, In Proc. of the 3rd International Conference on Configurable Distributed Systems, May 1996.

SHAW, M.; CLEMENTS, P.; A Field Guide to Boxology: Preliminary Classification of Architectural Styles for Software Systems, In Proceedings of the 21st International Computer Software and Applications Conference (COMPSAC’97), Published by CS Press, pp. 6-13, 1997.

SHAW, M.; CLEMENTS, P.; The Golden Age of Software Architecture, Technical Report CMU-ISRI-06-101, Carnegie Mellon, Institute for Software Research International, Feb 2006.

SHAW, M.; DELINE, R.; KLEIN, Daniel V.; ROSS, Theodore L.; YOUNG, David M.; ZELESNIK, G.; Abstractions for Software Architecture and Tools for Support Them, In IEEE Transactions on Software Engineering, vol. 21, no. 4, pp. 314-335, Apr 1995.

SOMMERVILLE, Ian; Engenharia de Software, 8ª ed., São Paulo: Pearson Addison-Wesley, 2007.

SONI, Dilip; NORD, Robert L.; HOFMEISTER, Christine; Software Architecture in Industrial Applications, In Proc. of 17th International Conference on Software Engineering (ICSE’95), ACM Press, pp. 196-207, 1995.

SUTTON, S.; ROUVELLOU, I.; Modeling of Software Concerns in Cosmos, In Proceedings of the 1st Aspect-Oriented Software Development Conference, pp. 127-134, Enschede, The Netherlands, 2003.

SZYPERSKI, C.; Component Software: Beyond Object-Oriented Programming, Addison-Wesley, 1998.

TANENBAUM, A. S.; Redes de Computadores, 4ª ed., Rio de Janeiro: Campus, 2003.

Page 151: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

150

TANENBAUM, Andrew S.; van STEEN, Maarten; Distributed Systems: principles and paradigms, Upper Saddle River – NJ: Prentice-Hall, 2002.

TARR, Peri; OSSHER, Harold; SUTTON Jr., Stanley M.; HARRISON, William; N-Degrees of Separation: Multi-Dimensional Separation of Concerns, In Robert E. Filman, Tzilla Elrad, Siobhán Clarke, and Mehmet Aksit (eds.), Aspect-Oriented Software Development, pp. 37-61, Addison-Wesley, Boston, 2005.

TEKINERDOGAN, Bedir; ASAAM: Aspectual software architecture analysis method, In Proc. of the 4th Working IEEE/IFIP Conf. on Software Architecture (WICSA’04), Published by IEEE CS Press, pp. 5-14, 2004.

TEKINERDOGAN, Bedir; SCHOLTEN, Frank; ASAAM-T: A tool environment for identifying architectural aspects, Technical Report, University of Chicago, 2005.

TERRY, A.; LONDON, R.; PAPANAGOPOULOS, G.; DEVITO, M.; The ARDEC/Teknowledge Architecture Description Language (ArTek), Version 4.0 Technical Report, Teknowledge Federal Systems, Inc. e U.S. Army Armament Research, Development, e Engineering Center, Jul 1995.

TRACZ, W.; LILEANNA: A Parameterized Programming Language, In Proceedings of the 2nd International Workshop on Software Reuse, pp. 66-78, Lucca, Italy, Mar 1993.

VESTAL, S.; A Cursory Overview and Comparison of Four Architecture Description Languages, Technical Report, Honeywell Technology Center, Feb 1993.

WEISER, M.; Some computer science issues in ubiquitous computing, Published in Communications of ACM, vol. 36, no. 7, pp. 74-84, 1993.

WIESE, Igor; Um Modelo de Interoperabilidade para Ambientes de Desenvolvimento Distribuído de Software, Dissertação de Mestrado – Programa de Pós-Graduação em Ciência da Computação, Universidade Estadual de Maringá, Maringá, 2006.

Page 152: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

151

Anexo 1 – Resultados da Comparação de ADLs de (MEDVIDOVIC; TAYLOR, 2000)

Tabela A1-1: Escopo e Aplicabilidade das ADLs – Fonte: (MEDVIDOVIC; TAYLOR, 2000)

ADL ACME Aesop C2 Darwin MetaH Rapide SADL UniCon Weaves Wright

Foco

Intercâmbio arquitetural, predominan-temente no nível estrutural

Especificação de arquiteturas em estilos específicos

Arquiteturas altamente distribuídas, evolutivas, e de sistemas dinâmicos

Arquiteturas de sistemas altamente distribuídos cujo dinamismo é guiado por um estrito alicerce formal

Arquiteturas no domínio de guia, navegação e controle de navegação (GN&C)

Modelagem e simulação do comportamento dinâmico descrito por uma arquitetura

Refinamento formal de arquiteturas através de níveis de detalhes

Geração de código glue para a interconexão de componentes existentes usando protocolos de interação de componentes

Arquitetura de fluxo de dados, caracterizadas por grande volume de dados e requisitos de tempo real no seu processamento

Modelagem de sistemas do comportamento dinâmico (especificamente, análise de deadlock) de sistemas concorrentes

Page 153: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

152

Tabela A1-2: Suporte das ADL para Modelagem de Componentes – Fonte: (MEDVIDOVIC; TAYLOR, 2000) ADL Características Interface Tipos Semântica Restrições Evolução Propried Não Funcionais

ACME

Component; independente da implementação

Pontos de interface são ports

Sistema de tipos extensível; parametrização possibilitada c/ templates

Não apóia; pode usar modelos semânticos de outras ADLs na lista de propriedades

Apenas através de interfaces

Subtificação estrutural através da feature extends

Permite qualquer atributo na lista de propriedades, mas não opera eles

Aesop Component; independente da implementação

Pontos de interface são input ports e output

ports

Sistema de tipos extensível

(opcional) linguagens de estilo específico para especificação de semântica

Por meio de interfaces e semântica; invariantes estilísticas

Subtipificação com preservação do comportamento

Permite associação de texto arbitrário com componentes

C2

Component; independente da implementação

Interface exportada das ports do topo às da base; elementos da interface são provided e required

Sistema de tipos extensível

Invariantes de componentes e pré e pós condições de operações em lógica de 1ª ordem

Através de interfaces e semântica; invariantes estilísticas

Subtipificação heterogênea

Não

Darwin Component; independente da implementação

Pontos de interface são services (provided e required)

Sistema de tipos extensível; suporta parametrização

π-calculus Através de interfaces e semântica

Não Não

MetaH

Process; restrição de implementação

Pontos de interface são ports

Conjunto de tipos enumerados pré-definidos

ControlH para modelagem de algoritmos no domínio GN&C29; semântica de implementação através de paths

Através de interfaces e semântica; modos; atributos não funcionais

Não Atributos necessários para análise de escalonamento de tempo real, confiabilidade, e segurança

Rapide

Interface; independente de implementação

Pontos de interface são constituints (provides,

requires, action, e service)

Sistema de tipos extensível; contém uma sublinguagem de tipos; apóia parametrização

Conjuntos de eventos parcialmente ordenados (posets)

Através de interfaces e semântica; restrições algébricas no estado do componente; restrições de padrões em eventos posets

Herança (subtipificação estrutural)

Não

SADL

Component; independente da implementação

Pontos de interface são ports de entrada e de saída (iports e oports)

Sistema de tipos extensível; permite parametrização de assinaturas de componentes

Não Através de interfaces; invariantes estilísticas

Subtipificação por restrição de subtipos; refinamento por meio de mapas de padrões

Requer modificação de componentes

UniCon

Component; restrição de implementação

Pontos de interface são players

Conjunto de tipos pré-definidos enumerados

Rastreia eventos em listas de propriedades

Através de interfaces e semântica; atributos; restrições em players que podem ser fornecidos por tipos de componentes

Não Atributos para análise de escalonamento

Weaves

Component; restrição de implementação

Pontos de interface são read ports e write ports; elementos de interfaces são objetos

Sistema de tipos extensível; tipos são sockets components

Ordenação parcial sobre objetos de entrada e de saída

Através de interfaces e semântica

Nada Permite associação de anotações arbitrárias não interpretadas com componentes

Wright

Component; independente da implementação

Pontos de interface são ports; semântica de interação da porta especificada em CSP

Sistema de tipos extensível; número parametrizável de portas e computação

Não focaliza; permitido em CSP Protocolos de interação para cada porta em CSP; invariantes estilísticas

Através de diferentes instanciações de parâmetros

Nada

29 Domínio GN&C: Domínio de Guia, Navegação e Controle de Navegação.

Page 154: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

153

Tabela A1-3: Suporte das ADL para Modelagem de Conectores – Fonte: (MEDVIDOVIC; TAYLOR, 2000) ADL Características Interface Tipos Semântica Restrições Evolução Prop. Não Funcionais

ACME

Connector; explícito Pontos de interface são roles

Sistema de tipos extensível, baseado em protocolos; parametrização via templates

Não suporta; pode usar modelos semânticos de outras ADLs na lista de propriedades

Via interfaces e estrutural para instâncias de tipos

Subtificação estrutural através da feature extends

Permite qualquer atributo na lista de propriedades, mas não opera eles

Aesop Connector; explícito Pontos de interface são

roles

Sistema de tipos extensível, baseado em protocolos

(opcional) semântica especificada usando Wright

Via interfaces e semântica; invariantes estilísticos

Subtipificação com preservação do comportamento

Permite associação de texto arbitrário com componentes

C2

Connector; explícito Interface com cada componente através de uma porta separada; elementos de interface são provided e required

Sistema de tipos extensível, baseado em protocolos

Semântica parcial especificada via filtros de mensagens

Via semântica; invariantes estilísticos (cada porta participa em apenas um link)

Interfaces reflexivas ao contexto; mecanismos de filtragem evolutivos

Nada

Darwin

Binding; in-lin; sem modelagem explícita de interações de componentes

Nada; permite “componentes de conexão”

Nada Nada Nada Nada Nada

MetaH

Connection; in-line; permite às conexões serem nomeadas opcionalmente

Nada Nada; suporta três classes genéricas de conexão: porta, evento, e equivalência

Nada Nada Nada Nada

Rapide

Connection; in-line; conectores reusáveis complexos apenas via “components de conexão”

Nada; permite “componentes de conexão”

Nada Posets; conexões condicionais

Nada Nada Nada

SADL

Connector; explícito Assinatura de componente especifica os tipos de dados suportados

Sistema de tipos extensível; assinaturas e restrições parametrizadas

Axiomas na linguagem de restrição

Via interfaces; invariantes estilísticos

Subtipificação; refinamento de conectores via mapas de padrões

Requer modificação de componetes (veja Seção 4.3.9)

UniCon

Connector; explícito Pontos de interface são roles

Conjunto de tipos pré-definidos enumerados

Implícita nos tipos dos conectores; informação semântica pode ser dada em listas de propriedades

Via interfaces; restringe o tipo de players que pode ser usados em um dado papel

Nada Atributos para análise de escalonamento

Weaves

Transport services; explícito

Pontos de interface são o encapsulamento de socket pads

Sistema de tipos extensível; tipos são sockets conectores

Via convenções de nomeação

Via interface Nada Permite associação de anotações arbitrárias não interpretadas com serviços de transporte

Wright

Connector; explícito Pontos de interface são roles; a semântica de interação de papéis é especificada em CSP

Sistema de tipos extensível, baseado em protocolos; número parametrizável de papéis e glue

Semântica do glue conector em CSP

Via interfaces e semântica; protocolos de interação para cada papel em CSP; invariantes estilísticos

Através de instanciações de parâmetros diferentes

Nada

Page 155: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

154

Tabela A1-4: Suporte das ADLs para Modelagem de Configurações Arquiteturais – Fonte: (MEDVIDOVIC; TAYLOR, 2000)

ADL Caracter. Compreensão Composição Refin/Rastreab Heterogeneidade Escalabilidade Evolução Dinamismo Restrições Propr. Não Func.

ACME

Attachmen

ts; explícito

Especificação textual explícita e concisa

Fornecida por meio de templates, representações e rep-maps

Rep-maps Listas de propriedades aberta; mapeamentos explícitos através de ADLs

Auxiliada por configurações explícitas; dificultada pelo número fixo de papéis

Auxiliada por configurações explícitas; famílias como primeira classe

Não As portas podem apenas estar vinculadas a papéis vice-versa

Permite qualquer atributo na lista de propriedades, mas não os opera

Aesop

Configu-

ration; explícito

Especificação gráfica explícita e concisa; hierarquia de tipos paralela para visualização

Fornecida por meio de representações

Não Permite múltiplas linguagens para modelagem da semântica; apóia desenvolvimento em C

Auxiliada por configurações explícitas; dificultada pelo número fixo de papéis

Sem suporte a arquiteturas parciais; auxiliada por configurações explícitas;

Não As portas podem apenas estar vinculadas a papéis vice-versa; invariantes estilísticas programáveis

Não

C2

Architec-

tural

Topology; explícito

Especificação gráfica e textual explícita e concisa

Permitida; suportada via arquitetura de componentes interna

Não Possibilitada pela arquitetura de componentes interna; suporta desenvolvimento em C++, Java e Ada

Auxiliada por configurações explícitas e número variável de portas de conectores; usada na construção de sua própria suíte de ferramentas

Permite arquiteturas parciais; auxiliada por configurações explícitas; mínimas dependências inter-componentes; conectores heterogêneos

Dinamismo não antecipado; inserção, remoção, e re-escrita de elementos

Invariantes estilísticas fixas

Não

Darwin

Binding; in-line

Especificação textual in-line com muitos detalhes de conectores; provê notação gráfica

Suportada pela feature componente composta da linguagem

Suporta geração de sistemas durante restringindo implementação

Permite múltiplas linguagens para a modelagem da semântica de componentes primitivos; suporta desenvolvimento em C++

Dificultada pelas configurações in-

line

Sem suporte a arquiteturas parciais; dificultada pelas configurações in-line

Dinamismo limitado: aplicação em tempo de execução de componentes e configuração condicional

Serviços fornecidos podem apenas estar vinculados a serviços requeridos e vice-versa

Não

MetaH

Connec-

tions; in-

line

Especificação textual in-line com muitos detalhes de conectores; provê notação gráfica

Suportada via macros

Suporta geração de sistemas; restringindo implementação

Suporta desenvolvimento em Ada; exige que todo componente contenha um laço de despacho de processo

Dificultada pelas configurações in-line;

Sem suporte a arquiteturas parciais; dificultada pelas configurações in-line

Não Applications são restrições com atribuos não funcionais

Suporta atributos tais como processadores de execução e período de clock

Rapide

Connect; in-line

Especificação textual in-line com muitos detalhes de conectores; provê notação gráfica

Mapeamentos associam uma arquitetura a uma interface

Mapas de refinamentos possibilitam simulações comparativas de arquiteturas em diferentes níveis

Suporta desenvolvimento de simulações executáveis na sub-linguagem executável da Rapide

Dificultada pelas configurações in-line; usada em projetos de grande porte

Sem suporte a arquiteturas parciais; dificultada devido a configurações in-line

Dinamismo limitado; configuração condicional e geração de eventos dinâmica

Mapas de refinamentos forçam refinamentos válidos; linguagem de restrição de poset temporizada

Modelo poset temporizado permite a modelagem de temporização na linguagem de restrição

SADL

Configu-

ration; explícito

Especificação textual explícita e concisa

Mapeamentos associam uma arquitetura a um componente

Mapas de refinamentos possibilitam refinamentos corretos através de estilos

Suporta elementos de alta e baixa granulosidade

Auxiliada por configurações explícitas; usada em projetos de grande porte

Sem suporte a arquiteturas parciais; auxiliada por configurações explícitas

Não Invariantes estilísticas programáveis; mapas de refinamento forçam refinamentos válidos

Arquitetura modificada pela adição de restrições

Page 156: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

155

ADL Caracter. Compreensão Composição Refin/Rastreab Heterogeneidade Escalabilidade Evolução Dinamismo Restrições Propr. Não Func.

UniCon

Connect; explícito

Especificação gráfica e textual explícita; a descrição da configuração pode estar distribuída

Suportada via componentes compostos e conectores

Suporta geração de sistemas; restringindo implementação

Suporta apenas tipos de componentes e conectores pré-definidos; suporta wrappers de componentes

Auxiliada por configurações explícitas e número variável de portas de conectores

Algum suporte a arquiteturas parciais; auxiliada por configurações explícitas

Não Players podem apenas ser anexados a papéis e vice-versa

Não

Weaves

Weaves; explícito

Especificação gráfica explícita e concisa

Apoiada por meio de sockets componentes

Suporta geração de sistemas; restringindo implementação

Desenvolvimento em C, C++, Objective C, e Fortran; requer que todos os tool

fragments forneçam um conjunto de métodos

Auxiliada por configurações explícitas, sockets, e número variável de sockets pads; usada em projetos de grande porte

Permite arquiteturas parciais; auxiliada por configurações explícitas; suporte para famílias via framework populados por sockets

Dinamismo não antecipado; inserção, remoção, e re-escrita de elementos

Impede links diretos componente-a-componente

Permite associação de anotações interpretadas arbitrárias com weaves

Wright

Attach-

ments; explícito

Especificação textual explícita e concisa

Computations e glue são expressos como arquiteturas

Não Suporta elementos de alta e baixa granulosidade

Auxiliada por configurações explícitas e número variável de papéis; usada em projetos de grande porte

Adequada para especificação parcial; auxiliada por configurações explícitas

Dinamismo não antecipado; inserção, remoção, e re-escrita de elementos

As portas podem apenas serem anexadas a papéis e vice-versa; invariantes estilísticas programáveis

Não

Page 157: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

156

Tabela A1-5: Ferramentas de Suporte das ADLs – Fonte: (MEDVIDOVIC; TAYLOR, 2000) ADL Especificação Ativa Múltiplas Visões Análise Refinamento Geração de Implementação Dinamismo

ACME

Não Textual; “weblets” na ACME-Web; visões arquiteturais em termos de alto nível (template), assim como construtores básicos

Analisador sintático (parser) Não Não Não

Aesop

Editor de componentes dirigido à sintaxe; classes de visualização invocam editores especializados externos

Textual e gráfico; visualizações específicas de estilo; tipos de componentes e de conectores em ícones distintos

Analisador sintático (parser); compilador específico do estilo; verificador de tipo; verificador para conflitos de recursos e factibilidade de escalonamento

Não Ferramenta build constrói código glue do sistema em C para o estilo pipe-and-filter

Não

C2

Processo de “arquiteturação” pró-ativo em DRADEL; verificador de tipos reativo, não intrusivo; crítica de design e listas to-do no Argo

Textual e gráfico; visão do processo de desenvolvimento

Analisador sintático (parser); verificador de regras do estilo; verificador de tipos

Gera skeletons de aplicações que podem ser completadas por meio de reuso de componentes OTS

A classe framework possibilita a geração de código em C/C++, Ada, e Java; o DRADEL gera skeletons de aplicações

ArchStudio permite a manipulação do dinamismo antecipado de arquiteturas

Darwin

Adição automatizada de portas para componentes de comunicação; propagação de alterações ao longo de portas vinculadas; diálogos para especificar propriedades de componentes

Textual, gráfico, e visão hierárquica do sistema

Analisador sintático (parser); compilador; cenários “what if” por meio de instanciação de parâmetros e de componentes dinâmicos

Compilador; componentes primitivos são implementados em uma linguagem de programação tradicional

Compilador gera código em C++

Suporte em tempo de compilação e de execução para alteração dinâmica restrita de arquiteturas ( replicação e configuração condicional)

MetaH

Editor gráfico requer correção de erros quando as alterações à arquitetura são aplicadas; restringe a escolha de propriedades de componentes por meio de menus

Textual e gráfico; tipos de componentes distintos por ícones diferentes

Analisador sintático (parser); compilador; análise de escalonamento, de confiabilidade, e de segurança

Compilador; componentes primitivos são implementados em uma linguagem de programação tradicional

Abordagem DSSA30; compilador gera código em Ada

Não

Rapide

Não Textual e gráfico; visualização do comportamento da execução por meio de simulações animadas

Analisador sintático (parser); compilador; análise por meio de filtragem e animação de eventos; verificador de restrição para garantir mapeamentos válidos

Compilador para sub-linguagem executável; ferramentas para verificar e compilar mapas de padrões de eventos durante a simulação

Construção da simulação do executável na sub-linguagem executável da Rapide

Suporte em tempo de compilação e de execução para alteração dinâmica restrita de arquiteturas (configuração condicional)

SADL

Não Apenas textual Analisador sintático (parser); análise de corretude relativa da arquitetura em relação a um mapa de refinamento

Verificador para aderência de arquiteturas em face de um mapeamento provado manualmente

Não Não

UniCon

Editor gráfico previne erros durante o design por meio da invocação do verificador de linguagem

Textual e gráfica; tipos de componentes e conectores distintos por ícones diferentes

Analisador sintático (parser); animação da execução em tempo real; observadores de baixo overhead; análise/depuração de componentes em uma weave

Compilador; componentes primitivos são implementados em uma linguagem de programação tradicional

Compilador gera código em C Não

Weaves

Não Apenas gráfico; tipos de componentes e conectores (sockets) distintos por ícones diferentes

Analisador sintático (parser); verificador de modelo para conformidade de tipo de portas para papéis; análise de conectores individuais para deadlock

Não Ligação dinâmica de componentes em C, C++, Objective C, e Fortran; sem geração de código

A Jacqurd permite a manipulação dinâmica não antecipada de weaves

Wright

Não Textual apenas; verificador de modelo fornece um equivalente textual de símbolos CSP

Não Não Não

30 DSSA (Domain Specific Software Architecture): Arquitetura de Software de um Domínio Específico

Page 158: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

157

Anexo 2 – Resultados do survey de (CLEMENTS, 1996)

A2-1. Tabelas de Resultados

O questionário circulou junto aos mantenedores de mais de uma dezena de ADLs. A

Tabela A2-1 contém a lista daquelas que tiveram seus questionários respondidos e tiveram

seus resultados validados. A fim de ganhar confiança no questionário, os autores aplicaram-no

a algumas linguagens, tais como Modechart, que não seriam consideradas ADLs. O objetivo

foi observar como essas linguagens se classificaram a fim de tentar entender as qualidades

que distinguem as ADLs das não ADLs.

Tabela A2-1: ADLs levantadas – Fonte: (CLEMENTS, 1996)

ADL Origem Referência

ArTek Teknowledge (TERRY; ERMAN; DEVITO, 1994)

CODE University of Texas at Austin (NEWTON; BROWNE, 1992)

Demeter Northeastern University (PALSBERG; XIAO; LIEBERHERR, 1995)

Modechart University of Texas at Austin (JAHANIAN; MOK, 1994)

PSDL/CAPS Naval Postgraduate School (SHING; BARNES; HUGHES, 1993)

Resolve Ohio State University (HEYM et al., 1994)

UniCon Carnegie Mellon University (SHAW et al., 1995)

Wright Carnegie Mellon University (ALLEN; GARLAN, 1994)

A Tabela A2-2 explica os símbolos das respostas contidas na Tabela A2-3, a qual, por

sua vez, serve como um guia de referência rápido para os leitores interessados em encontrar

uma linguagem para uma aplicação em particular.

Tabela A2-2: Legenda das respostas

Símbolo Significado S Sim N Não A Alta capacidade: a linguagem provê características explícitas para dar suporte a

esta capacidade. M Médio: a linguagem provê características genéricas por meio das quais esta

capacidade pode ser indiretamente alcançada. B Baixo: a linguagem provê pouco suporte. F Ferramenta desenvolvida especificamente para a ADL dar suporte a esta

capacidade. E Ferramenta externa que fornece esta capacidade. P A linguagem provê informação suficiente para dar suporte à capacidade, mas

nenhuma ferramenta de suporte atualmente existe.

Page 159: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

158

Tabela A2-3: Resultados do survey das ADLs

Atributos

AR

TE

K

CO

DE

DE

ME

TE

R

MO

DE

CH

AR

T

PSD

L/C

AP

S

RE

SOL

VE

UN

ICO

N

WR

IGH

T

Aplicabilidade

Habilidade para representar estilos M M M M A M M A

Habilidade para manipular questões de tempo real M M A A B A B

Habilidade p/ manipular questões de sist. distrib. A A A A A M M M

Habilidade para manipular arquiteturas dinâmicas B A A B M B ? B

Qualidade de definição da linguagem

Atenção à completude da especificação da arquit. M B A M M B M A

Atenção à consistência da especificação da arquit. B B M B M A B A

Escopo da linguagem; usuário pretendidos

Requisitos A B ? A A M B B

Design/algoritmos detalhados B M A M A M B B

Código M B A B B A A B

Engenheiro de domínio S S S N S N S S

Engenheiro da aplicação S S S S S S S S

Analista de sistemas S N S S S S N S

Captura do histórico do design ? B ? B ? ? ? ?

Visões

Textual S N S S S S S S

Gráfico S S S S S N S N

Riqueza da visão semântica B M A A A B ? B

Referência cruzada inter-visões M B B M M B M B

Suporte a variabilidade M B A B A A B A

Poder de expressão, extensibilidade A B M M A A M M

Suporte à criação de arquitetura F F P F F E F

Suporte à validação de arquitetura F F E F F P F E

Suporte à refinamento de arquitetura F P P F F P P P

Suporte à análise de arquitetura E P F F P

Suporte à construção da aplicação F P P

Maturidade das ferramentas

Disponível como COTS N N ? N N N N N

Idade (anos) 3 ? 10 7 5 ? 2 3

Número de sites em uso 11 ? ? 4 12 4 1 1

Suporte ao cliente disponível S S N N N S N N

A2-2. Explicação dos Resultados

Para criar o guia de referência rápido, os surveys completos foram extraídos usando-se as seguintes heurísticas:

Page 160: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

159

• Se fosse possível combinar um conjunto de questões em um conjunto geral sobre a capacidade da linguagem sem perder o detalhe significativo, isto era feito. A classificação da capacidade geral de uma linguagem é a média aritmética de suas pontuações nas questões componentes (se a escala for ordenada, tal como Alto/Médio/Baixo), ou a resposta que aparecia com mais freqüência nas questões componentes (se a escala de classificação não for ordenada). Se as questões componentes eram Sim/Não, então a classificação sumária reflete a taxa de respostas Sim.

• As questões nas quais todas as linguagens fizeram a mesma pontuação, ou aproximadamente a mesma, tendiam a serem suprimidas, uma vez que elas não serviam como discriminadores úteis entre as linguagens.

A2-2.1. ADLs versus outras linguagens

As linguagens que são consideradas as tendências atuais das ADLs compartilham os seguintes aspectos:

• As abstrações que elas fornecem aos usuários eram arquiteturais por natureza. Todas representaram componentes e conexões.

• A maioria das visões fornecidas pelas ADLs continham informações predominantemente arquiteturais. Isto está em contraste com uma linguagem de programação ou uma linguagem de requisitos que tendem a mostrarem outros tipos de informações.

• A análise fornecida pela linguagem fia-se em informação de nível arquitetural. Isto está em contraste a um analisador de desempenho que identifica gargalos baseados em informações de implementação (isto é, código fonte).

A2-2.2 Discriminadores

As áreas seguintes descobriram diferenças interessantes entre as ADLs levantadas:

• As ADLs diferiram de forma marcante em relação às suas habilidades para manipular construtores de tempo real no nível arquitetural. Grosso modo, a metade tinham a pretensão de tratar construtores de tempo real hard tais como deadlines; apenas um pequeno número lidaram com construtores de tempo real soft tais como prioridades das tarefas.

• As ADLs variam em relação às suas habilidades em dar suporte à especificação de estilos arquiteturais. Todas as ADLs eram capazes de representar arquiteturas pipe-and-filter, diretamente ou indiretamente. Outros estilos não se saíram muito bem. Todas forneceram estruturação hierárquica de componentes, e eram capazes de representar objetos, mas apenas poucas eram capazes de manipular herança de classes orientadas a objetos. Apenas duas manipulavam arquiteturas dinâmicas.

• O conjunto de ADLs levantadas se divide uniformemente em relação às suas habilidades de permitir o usuário definir novos tipos de componentes e conectores, definir novos comandos na ADL, e representar informações não arquiteturais (tais como requisitos, ou casos de teste) usando a ADL. Extensibilidade e escopo foram bons discriminadores.

• Enquanto todas linguagens forneceram regras de consistência interna e regras de completude integradas para artefatos representados nessas linguagens, poucas permitiram ao usuário definir o que queriam dizer por consistência, e poucas lidaram com consistência entre diferentes artefatos (ex., entre uma arquitetura e designs de componentes).

Page 161: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

160

• As ADLs variaram amplamente em suas habilidades de dar suporte à análise. A Modechart caracteriza um verificador de modelo que recebe como entrada uma asserção lógica e relata se a descrição do sistema garante, proíbe, ou é meramente compatível com essa asserção. Uma capacidade de análise mais genérica (tal como no caso de um verificador) mostrado no questionário como a habilidade para analisar muitos atributos de qualidade diferentes. Por exemplo, um simulador tinha a capacidade de ser usado para analisar a usabilidade permitindo que os usuários observem o comportamento simulado para ver se ele atinge suas expectativas.

• As ADLs diferiram em relação às suas capacidades de manipular variabilidade, ou diferentes instanciações da mesma arquitetura. Todas apoiavam a variabilidade de componentes por meio da capacidade de simples re-escrita, mas poucas apoiavam a manutenção de diferentes instanciações da mesma arquitetura simultaneamente.

• Quando oferecem mais do que uma visão arquitetural, as ADLs variam amplamente em suas habilidades de converter entre essas visões. A capacidade de intercambiar entre visões é um forte discriminador entre as ADLs levantadas.

A2-2.3 Atributos comuns

Foram observados os seguintes atributos comuns:

• Todas as ADLs levantadas tinham uma sintaxe gráfica; todas exceto uma tinham uma forma textual. Toda linguagem exceto uma tinha a característica de uma sintaxe formal, e a vasta maioria era caracterizada por semântica definida formalmente.

• Toda linguagem tinha a pretensão de ser apta a modelar sistemas distribuídos.

• As ADLs tendiam a não fornecer muito suporte para capturar o rationale e/ou histórico do design, a não ser por meio de mecanismos de anotações genéricas ou de propósito geral.

• Todas as ADLs tinham a pretensão de manipular fluxo de dados e fluxo de controle na forma de mecanismos de interconexão. A Modechart foi a mais fraca a este respeito, devido a sua habilidade para lidar apenas com predicados de estados (tais como “data

sent”) ao invés de valores de dados realísticos.

• Todas as ADLs forneceram ajuda na criação e validação e refinamento de arquiteturas, mesmo se a validação fosse apenas feita no contexto das regras da própria linguagem para completude ou legalidade.

• Todas as ADLs tinha a características da habilidade para representar níveis hierárquicos de detalhes, e manipular instanciações de uma template como um modo rápido para executar a cópia de sub-estruturas durante a criação.

• Todas ADLs oferecem suporte ao engenheiro da aplicação, e a maioria dá suporte ao engenheiro de domínio, mesmo que apenas indiretamente. A maioria dá suporte ao analista do sistema por meio do fornecimento de capacidades analíticas abertamente. Nenhuma tinha a pretensão de diretamente dar suporte ao gerenciamento de projetos.

• Finalmente, um atributo comum muito evidente foi a carência de experiência detalhada e aplicação do mundo real que as ADLs atualmente oferecem. Espera-se que assim como que os benefícios da arquitetura tornam-se melhor compreendidos, que os benefícios de representações formais serão igualmente recompensados, e as ADLs se tornarão elas próprias como tecnologias viáveis para o desenvolvimento de sistemas complexos.

Page 162: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

161

Anexo 3 – Caracterização de Abordagens de Aspectos Preliminares

Este anexo apresenta uma análise realizada por Bakker, Tekinerdoğan e Aksit (2005) acerca das seguintes abordagens de aspectos preliminares,

• Theme/Doc (BANIASSAD; CLARKE, 2004)

• Modularização e composição de requisitos aspectuais (RASHID; MOREIRA; ARAÚJO, 2003)

• Integração do framework NFR em um modelo ER (BRITO; MOREIRA, 2004)

• Identificação de aspectos usando raciocínio arquitetural (BASS; KLEIN; NORTHROP, 2004)

• Abordagens generativas orientadas a aspectos (KULESZA; GARCIA; LUCENA, 2004-a) e (KULESZA; GARCIA; LUCENA, 2004-b)

• Método de análise de arquitetura de software aspectual (TEKINERDOGAN, 2004)

• Modelagem de interesse no Ambiente de Manipulação de Interesse (SUTTON; ROUVELLOU, 2003)

A3-1 Theme/Doc

(BANIASSAD; CLARKE, 2004)

1. Fase: Análise de Requisitos.

2. Objetivo: Identificação e especificação de aspectos preliminares.

3. Artefatos: requisitos textuais, ações, entidades e temas. Dois tipos de temas são distinguidos: temas básicos e temas transversais.

4. Regras Heurísticas e Processos: Theme/Doc consiste de três sub-processos: Identificação de ações e entidades que formam os requisitos textuais, categorização de ações em temas, identificação de temas transversais. Cada sub-processo inclui regras heurísticas. A decisão se um tema é transversal é explicitamente definida, enquanto as regras para a identificação de ações e entidades e a decisão de quais ações são suficientemente grandes para ser um tema permanece implícita (“altamente intuitiva”).

5. Modelo de Aplicação: Theme/Doc fornece visões que expõe quais comportamentos estão co-localizados nos requisitos. A visão de ação principal é usada para mostrar graficamente a relação entre requisitos e ações. A clipped action view é usada para representar os temas transversais. Juntamente com essas visões a visão de temas é usada para planejar o design e a modelagem dos temas identificados. A visões de temas diferem das visões de ações no fato de que elas apenas mostram requisitos e ações, mas também mostram elementos essenciais do sistema que necessitam ser considerados para cada design de tema.

6. Ferramenta de Suporte: a ferramenta Theme/Doc está atualmente sob desenvolvimento. A ferramenta adota requisitos textuais, interesses, grupos de interesses, entidades, anexos, associações e postponements com entrada. Esta ferramenta cria várias visões e suporta a identificação e especificação de interesses transversais na fase de análise de requisitos.

7. Suporte à Rastreabilidade: Theme/Doc é focada apenas na fase de análise de requisitos. Não há suporte à rastreabilidade para a fase de análise de domínio ou de design de arquitetura.

Page 163: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

162

A3-2 Modularização e Composição de Requisitos Aspectuais (AORE)

(RASHID; MOREIRA; ARAÚJO, 2003)

1. Fase: Análise de Requisitos.

2. Objetivo: Identificação de interesses transversais no nível de análise de requisitos, especificação e avaliação destes interesses.

3. Artefatos: interesses, requisitos dos stakeholders, uma matriz relacionando interesses e requisitos de stakeholders, regras de composição e uma matriz de contribuição.

4. Regras Heurísticas e Processos: AORE fornece os seguintes sete passos que são seqüencialmente executados: identificar & especificar interesses e requisitos de stakeholders; identificar interesse de alta granularidade / relacionamentos de requisitos de stakeholders; identificar aspectos candidatos; definir regras de composição para um aspecto candidato e os requisitos de stakeholders; identificar e resolver conflitos entre aspectos candidatos; redefinir requisitos; e especificar dimensões de aspectos.

Apesar de o processo ser bem definido, não se pode dizer o mesmo em relação às regras heurísticas. Algumas regras heurísticas estão explícitas, tais como, a identificação de aspectos candidatos, mas muitas outras regras permanecem implícitas.

5. Modelo de aplicação: O resultado do processo é um conjunto de aspectos candidatos, que são interesses que entrecortam múltiplos requisitos.

6. Ferramenta de Suporte: Há uma ferramenta chamada Aspectual Requirements

Composition and Decision (ARCADE). Esta ferramenta está atualmente sob desenvolvimento. A ferramenta torna possível definir os requisitos de ponto de vista, requisitos aspectuais e regras de composição usando templates pré-definidos.

7. Suporte à Rastreabilidade: AORE suporta identificação e especificação de aspectos na fase de análise de requisitos, mas não há suporte a rastreabilidade para outras fases.

A3-3 Integração do framework NFR em um modelo ER (INFR)

(BRITO; MOREIRA, 2004)

1. Fase: Análise de Requisitos.

2. Objetivo: Identificação de interesses transversais.

3. Artefatos: documentação de stakeholders, catálogos, templates, interesses e match points. Os templates são usados para especificar um interesse. Um match point especifica qual interesse transversal deve ser composto com um dado interesse. As regras de composição definem a ordem na qual os interesses serão aplicados em um determinado match point.

4. Regras Heurísticas e Processos: A abordagem INFR consiste de quatro tarefas: identificar interesses, especificar interesses, identificar interesses transversais e compor interesses.

5. Modelo de Aplicação: aspectos candidatos, que são interesses que entrecortam múltiplos requisitos.

6. Ferramenta de Suporte: atualmente não há disponível ferramenta de suporte para esta abordagem.

7. Suporte à Rastreabilidade: A abordagem INFR foca na fase de análise de requisito, e não contém suporte à rastreabilidade para outras fases preliminares do ciclo de vida do desenvolvimento de software.

Page 164: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

163

A3-4 Identificação de aspectos usando raciocínio arquitetural

(BASS; KLEIN; NORTHROP, 2004)

1. Fase: Design Arquitetural.

2. Objetivo: A identificação de aspectos usando a abordagem de raciocínio arquitetural (IAAR) tenta derivar uma arquitetura de software partindo de seus requisitos de atributo de qualidade por meio de insights captados dos modelos de atributos de qualidade criados usando-se táticas arquiteturais.

3. Artefatos: requisitos de atributos de qualidade, arquitetura.

4. Regras Heurísticas e Processos: contém táticas arquiteturais que conduzem a aspectos arquiteturais (candidatos). Uma tática arquitetural é um meio de satisfazer uma response

measure de um cenário de atributo de qualidade por meio da manipulação de algum aspecto de um modelo de atributo de qualidade através de decisões de design arquitetural. Os pontos de junção arquiteturais são pontos bem definidos na especificação da arquitetura de software. Conjuntos de junção arquiteturais são meios de referência para coleções de pontos de junções arquiteturais. Aspectos arquiteturais são visões arquiteturais consistindo de conjuntos de junções e comportamentos transversais arquiteturais.

As táticas arquiteturais levam a aspectos arquiteturais. Mas como identificar as táticas arquiteturais? O primeiro passo do processo é formular requisitos de atributos de qualidade em formato de cenário. O segundo passo do processo consiste em construir um modelo de atributo de qualidade. O terceiro passo do processo é transferir informações entre frameworks de raciocínio. O quarto passo no processo é resolver restrições conflitantes. O último passo consiste na interação entre o método de design e o arquiteto.

5. Modelo de Aplicação: os aspectos candidatos identificados a partir do modelo de aplicação.

6. Ferramenta de Suporte: atualmente não há ferramenta de suporte disponível para esta abordagem.

7. Suporte a Rastreabilidade: esta abordagem foca na fase de design de arquitetura, e não há suporte a rastreabilidade para outras fases preliminares do ciclo de vida do desenvolvimento de software.

A3-5 Abordagens Generativas Orientadas a Aspectos (AOGA)

(KULESZA; GARCIA; LUCENA, 2004a) e (KULESZA; GARCIA; LUCENA, 2004b)

A abordagem AOGA31 concentra-se no domínio de Sistemas Multi-Agentes (MAS – Multi-

Agent Systems). Os conceitos introduzidos são genéricos e não limitados ao domínio MAS. 1. Fase: Análise de Domínio e Design de Arquitetura.

2. Objetivo: identificação e especificação de aspectos do domínio e arquiteturais. Com o uso de aspectos a modularização de features MAS poderia ser realizada.

3. Artefatos: conceitos de domínio representam os artefatos na fase de análise de domínio. Nesta primeira camada da fase de design de arquitetura, os componentes e componentes aspectuais com interfaces são os artefatos.

4. Regras Heurísticas e Processos: o processo é composto como segue, primeiro uma linguagem específica de domínio (DSL – domain specific language), chamada Agent-DSL

31 Aspect-Oriented Generative Approach

Page 165: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

164

é usada para coletar e modelar as features ortogonais e as features transversais de um agente de software. Segundo, uma arquitetura OA é desenhada para modelar uma família de agentes de software. A arquitetura está centrada na definição de componentes aspectuais para modularizar as features de agentes transversais no nível arquitetural de abstração. No último passo, é usado um gerador de código que mapeia abstrações da Agent-DSL para composições específicas de objetos e aspectos na arquitetura agente.

5. Modelo de Aplicação: contém dois principais modelos de aplicação: modelos de features e modelos de componentes. Os modelos de features são representados em uma linguagem de domínio específico chamada Agent-DSL. A Agent-DSL usa o XML-Schema para representar as features. Na fase de design de arquitetura, a linguagem de modelagem aSide é usada para representar a arquitetura de software.

6. Ferramenta de Suporte: A ferramenta agent architecture generator é implementada como um plug-in Eclipse. A ferramenta é capaz de ler a descrição do agente da Agent-DSL. O plug-in pode gerar as classes para representar os elementos de uma XML-Schema.

7. Suporte a Rastreabilidade: há uma ligação direta de mapeamento entre uma feature transversal na análise de domínio e uma componente aspectual no design de domínio. Assim, há um suporte a rastreabilidade disponível a partir do modelo de aplicação do domínio para o modelo de aplicação arquitetural.

A3-6 Método de Análise de Arquitetura de Software Aspectual (ASAAM32)

(TEKINERDOGAN, 2004)

1. Fase: Design de Arquitetura.

2. Objetivo: o alvo desta abordagem é identificar e especificar explicitamente aspectos preliminares arquiteturais no ciclo de vida do software.

3. Artefatos: cenários e componentes arquiteturais. Existem três tipos de cenários: direto, indireto e aspectual. Um cenário direto pode ser executado diretamente. Cenários indiretos exigem uma alteração de um componente. E cenários aspectuais podem ser diretos ou indiretos e estarem espalhados através de múltiplos componentes. Existem quatro tipos de componentes: componente coeso, componente mal definido, componente entrelaçado, componente composto.

4. Regras Heurísticas e Processos: O processo consiste de cinco passos: desenvolvimento de arquitetura candidata, desenvolvimento de cenários, avaliação de cenário individual e identificação de aspecto, avaliação de interação de cenário & identificação de componentes e refatoração da arquitetura.

5. Modelo de aplicação: um conjunto de aspectos arquiteturais que podem ser usados para refatorar a arquitetura. Os componentes de arquitetura são especificados usando-se o estereótipo: arquitetura. Isto não é uma notação de abstração para aspectos candidatos.

6. Suporte a Ferramentas: ASAAM tem sido implementada como um plug-in Eclipse em no ambiente da ferramenta ASAAM-T.

7. Suporte à Rastreabilidade: esta abordagem foca na fase de design de arquitetura, e não há suporte à rastreabilidade para outras fases preliminares do ciclo de vida do desenvolvimento de software.

32 Aspectual Software Architecture Analysis Method

Page 166: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

165

A3-7 Modelagem de Interesse no Ambiente de Manipulação de Interesse (SUTTON; ROUVELLOU, 2003)

1. Fase: a abordagem ConMan abstrai informações a partir do ciclo de vida de software e conseqüentemente este modelo pode ser usado em toda fase do ciclo de vida de software.

2. Objetivo: ConMan tem a pretensão de ser uma ferramenta para modelagem de interesses e uma plataforma para desenvolvimento de abordagens alternativas de modelagem de interesses.

3. Artefatos: o espaço de interesses consiste de: unidades, interesses, relacionamentos e restrições. As unidades são elementos do modelo de interesses cujo propósito é representar, no modelo de interesse, o produto do trabalho do desenvolvimento de software. No espaço de interesses, cada unidade refere-se a um artefato, o qual representa os detalhes do software. No ConMan novos tipos de artefatos, possivelmente envolvendo linguagens não manipuladas previamente podem ser introduzidas. Isto inclui linguagens de software (tais como requisitos, design ou programação) assim como artefatos como diretórios, arquivos jar, XML e outros documentos.

4. Regras heurísticas e Processos: não há suporte à processo e não há regras heurísticas.

5. Modelo de aplicação: o ConMan gerencia um espaço de interesses, o qual modela um corpo de software, e os interesses que são relevantes dentro dele. O corpo de software pode ser um único projeto, sistema ou componente, ou um grande corpo, tal como um workspace do conjunto de trabalho do Eclipse.

6. Suporte a ferramentas: a ferramenta Concern Manipulation Environment (CME) oferece um conjunto de componentes para criar e compor interesses. Atualmente, a ferramenta CME oferece suporte à identificação e modelagem de interesses no nível de design detalhado. Entretanto, no futuro a ferramenta poderá ser usada para a identificação e modelagem de interesses em todas as fases do ciclo de vida do software.

7. Suporte à rastreabilidade: não há suporte explícito à rastreabilidade porque esta abordagem abstrai informações a partir do ciclo de vida do software.

A3-8 Avaliação das Abordagens A Tabela A3-1 representa a análise das abordagens de aspectos preliminares

apresentadas nas seções prévias. Usando os dados da tabela, Bakker, Tekinerdoğan e Aksit (2005) derivaram as seguintes observações.

1. Não há identificação de aspectos na fase de Análise de Domínio

A maioria das abordagens parece estar focalizada na fase de análise de requisitos ou na fase de design de arquitetura. Ainda não há suporte para a identificação de aspectos na fase de análise de domínio. A análise de domínio almeja identificar, capturar e organizar o conhecimento do domínio sobre o domínio do problema, e como tal provê os conceitos a partir de uma perspectiva do domínio da solução. A análise de requisitos provê os interesses a partir de uma perspectiva do domínio do problema. Na verdade, a identificação dos aspectos na análise de requisitos e análise de domínio poderia oferecer suporte um ao outro.

2. Forte foco na identificação de aspectos

Parece haver um forte foco na identificação de aspectos em todas as abordagens. Não obstante, diversas abordagens têm sido fornecidas para modelar aspectos no nível de design detalhado, a modelagem de aspectos preliminares não tem sido investigada em detalhes. Também foi observado que a avaliação de aspectos está faltando. Em (RASHID; MOREIRA;

Page 167: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

166

ARAÚJO, 2003) uma análise de trade-off e priorização de aspectos conflitantes é apresentada. Além da análise de aspectos um em relação ao outro, obviamente também deveria haver uma avaliação mais ampla em abordagens para julgar se os aspectos apropriados são identificados, e se os aspectos têm sido especificados corretamente.

3. Não há modelo de interesses uniforme

Apesar de a noção de interesse parecer ser um tema comum a todas as abordagens, os artefatos adotados para a identificação de aspectos e os modelos de interesses adotados são diferentes. Até mesmo as abordagens definidas para uma mesma fase no ciclo de vida parecem ter diferenças. Por exemplo, a abordagem Theme/Doc identifica interesses mas não especifica propriedades dos interesses identificados mas a abordagem INFR usa um template para descrever as propriedades dos interesses. Nós podemos além disso observar que a definição do termo aspecto em diversas abordagens é muito similar à definição de aspectos nas linguagens de programação. Além disso, diferentes abordagens aplicam conceitos que são similares aos conceitos de conjunto de pontos de junção, pontos de junção e comportamento

transversal. Entretanto, não está claro se estes conceitos são os melhores meios para lidar com os interesses transversais nas fases preliminares do desenvolvimento de software.

4. As regras heurísticas diferem por abordagem

Apesar de que a maioria das abordagens definirem um processo explícito, as heurísticas adotadas estão geralmente implicitamente definidas ou dependem da intuição do engenheiro de software. Isto não apenas reduz o entendimento das abordagens, mas também torna subjetiva a interpretação dos métodos.

5. Não há ferramenta de suporte estável

Parece que as metas definidas para a identificação, especificação ou avaliação de aspectos preliminares não estão maduras ainda. Todavia, há esforços intensivos para o desenvolvimento de ferramentas de suporte, por exemplo para as abordagens Theme/Doc, AORE, INFR e ASAAM.

6. Não há suporte a rastreabilidade

A maioria das abordagens tem um forte foco em uma fase dedicada do ciclo de vida do software. Nenhuma das abordagens oferece suporte para rastreamento entre as fases. Para fornecer o rastreamento, o mapeamento a partir de interesses em uma fase para outra deveria ser bem definido. O ConMan provê um meta-modelo que pode ser usado para modelar interesses em toda fase do ciclo de vida do software.

A3-9 Conclusão

Durante os últimos anos diversas abordagens têm sido apresentadas para o tratamento dos aspectos nos estágios preliminares do ciclo de vida de desenvolvimento de software. Nós temos fornecido uma caracterização de abordagens selecionadas e temos comparado estas em relação aos critérios derivados a partir de um framework metodológico para desenvolvimento de software. A caracterização provê uma perspectiva sistemática nas diferentes abordagens e resultou na identificação de diversos problemas abertos que são importantes na identificação, especificação e na avaliação de aspectos na análise de requisitos, análise de domínio e no nível de design de arquitetura. Parece que o foco está meramente na identificação de aspectos durante a análise de requisitos e no design arquitetural. Além disso, está faltando um modelo de interesses uniforme para a representação de aspectos nos estágios preliminares. Não obstante as diferentes abordagens fornecerem um processo sistemático, as regras heurísticas que são aplicadas não são sempre explícitas.

Page 168: UM CONJUNTO DE CARACTERÍSTICAS DESEJÁVEIS EM UMA ADL ...mestrado/diss/2007/mendes.pdf · de Descrição de Arquitetura Orientada a Aspectos (ADL-OA). Com base nessas diretrizes

167

Tabela A3-1 – Avaliação das abordagens de aspectos preliminares – Fonte: (BAKKER; TEKINERDOGAN; AKSIT, 2005)

Ciclo de Vida

Objeti-vo

Artefatos Regras Heurísticas Modelos de Aplicação

Ferramentas de Suporte

Suporte à Rastrea-bilidade

Theme/Doc AR Ident Requisitos textuais, ações, entidades e temas

Visões de ações, suporte a regras e suporte a processos para identificação de aspectos

Visão de temas

Em desenvolv. -

AORE AR Ident Interesses, requisitos de stakeholders, matriz relacionando interesses e requisitos de stakeholders e uma matriz de contribuição

Regras de composição, suporte a processo de identificação e especificação de aspectos

Aspectos candidatos

Em desenvolv. -

INFR AR Espec Documentação, catálogos, templates, interesses e match

points

Suporte a processo para identificação e especificação de aspectos, regras heurísticas e regras de composição

Aspectos candidatos, modelo do sistema

Em desenvolv. -

AOAR DA Ident Requisitos de atributos de qualidade

Suporte a processo para identificação de aspectos candidatos

Aspectos candidatos

- -

AOGA AD

DA

Ident Conceitos de Domínio, Componentes (arquiteturais), modelos de features

Suporte a processo para especificação de aspectos

Modelo de arquitetura

Editor XML de modelo de feature, Gerador de Arquitetura Agente, Geração de Código

Sim, mapeamento direto de features transversais

ASAAM DA Ident Cenários Regras heurísticas e suporte a processo para identificação de aspectos: explicitamente especificados

Aspectos arquiteturais

ASAAM-T -

ConMan Abs-trato

Espec. de aspectos

Interesses, Relaciona-mentos, restrições, unidades

- Modelo de interesses

CME -

Legenda – AR: Análise de Requisitos – DA: Design Arquitetural – AD: Análise de Domínio