You are on page 1of 6

Linguagem de Descrio de Arquitetura (ADL)

1. Objetivo 2. Conceitos 3. Componentes 4. Conectores 5. Portas 6. Especificao 7. Architect Description Language (ADL) 8. Linguagem 9. Sintaxe 10. Semntica

Objetivo
Descrever sistemas atravs de uma linguagem que considere cenrios como componentes e os seus relacionamentos como conectores. Essa visualizao facilitaria o agrupamento dos cenrios de um sistema, de forma a visualizar os seus subsistemas, especificando a arquitetura.

Conceitos
Para descrevermos uma arquitetura de software necessrio conhecermos alguns conceitos, de forma que possamos utiliz-los para, sistematicamente, dividirmos e organizarmos o software em suas principais partes, utilizando estas como documentao necessria no seu desenvolvimento e manuteno. Os principais conceitos necessrios so: componentes, conectores e portas.

Componentes Componentes so partes menores de algo maior. Tratando-se de software, componentes so partes menores de uma entidade computacional num dado nvel de abstrao. Ento, componentes podem ser subsistemas, funes, entidades de modelo de dados, classes, objetos, dependendo do nvel de abstrao escolhido. A visualizao dos componentes de um sistema de suma importncia para que o seu desenvolvedor organize propriamente as idias e informaes que rodeiam o problema, ou seja, o Universo de Informaes. Tambm possibilita diviso de trabalho no desenvolvimento do sistema, j que a visualizao dos componentes divide o sistema. Essa abordagem tambm permite a utilizao de mtricas de qualidade de software. Uma mtrica que pode ser aplicada a um componente a coeso. Coeso a medida de propsito de um componente. O componente mais coeso quando tem funo mais especfica. O ideal que um componente tenha apenas um propsito, pois isso melhora a legibilidade de um sistema e, portanto, seu desenvolvimento e manuteno.

Conectores Conectores podem ser vistos como relacionamentos entre os componentes. Tambm so necessrios na definio da arquitetura e possibilitam o uso da mtrica de acoplamento, que mede a dependncia entre componentes. Essa verificao do nvel de dependncia vista atravs do tipo de relacionamento entre os componentes, ou seja, atravs dos conectores.

Os componentes podem se relacionar de algumas formas diferentes. Por exemplo, pode haver relacionamento por partes de componentes, arquivos, controle ou dados. Sistemas que utilizam relacionamentos por partes de componentes na verdade no esto utilizando a abordagem com conectores e isso pode levar a problemas srios de acoplamento, portanto esses tipo de relacionamento o mais acoplado de todos. Sistemas que utilizam conectores que so arquivos ou variveis de controle tm mdio acoplamento e que utilizam dados tm acoplamento baixo.

Portas
Portas so os componentes que esto nos conectores e garantem a conexo entre os componentes de sistema. Podemos tambm dizer que so as interfaces de relacionamento. So entidades bem simples do nvel de abstrao escolhido. Por exemplo, caso uma funo seja considerada um componente de um sistema, os conectores seriam os seus parmetros e a porta seria o seu cabealho.

Especificao
Architect Description Language (ADL)
Tendo em mente os conceitos necessrios para a especificao de uma arquitetura, podemos comear a pensar em como desenvolver uma linguagem que descreve sistemas em nvel de arquitetura. Aps a visualizao de alguns exemplos j desenvolvidos, como SysML [1] e ACME [2], adotamos uam linguagem que parece uma simplificao da ACME. Conforme os requisitos passados, a linguagem utiliza-se de cenrios como componentes e os seus relacionamentos como conectores. A linguagem mostrada aqui uma expanso da linguagem utilizada pelo Editor C&L[3] para descrever sistemas atravs de cenrios e lxicos. Toda a estrutura de descrio de cenrios ser mantida. Adicionamos apenas o necessrio para a visualizao dos conectores entre os cenrios. Linguagem Sintaxe

A sintaxe da linguagem deve associar, para um determinado cenrio, outros cenrios que relacionem-se com este atravs dos relacionamentos propostos. Uma possvel abordagem: <cenario> ... <conector> <tipo>restricao, pre_condicao, excecao ou sub_cenario</tipo> <cenario_relacionado>nome do cenrio</cenario_relacionado> </conector> <cenrio> Semntica

A linguagem proposta pode ser vista por dois pontos de vista. Abordagem 1 (Ponto de vista do cenrio sendo descrito): Para cada cenrio, fazer referncias a todos os outros cenrios que relacionam-se com ele, do ponto de vista do cenrio sendo descrito. Exemplo: <cenario> ... <conector> <tipo>restricao, pre_condicao, excecao ou sub_cenario</tipo> <cenario_relacionado>outro cenrio que restricao, pre_condicao, excecao ou sub_cenario para este</cenario_relacionado> </conector> ... <cenrio>

Abordagem 2 (Ponto de vista dos componentes que se relacionam com o componente sendo descrito): Para cada cenrio, a linguagem deve informar quais suas classificaes em relao a outros, do ponto de vista dos outros cenrios. Exemplo: <cenario> ... <conector> <tipo>restricao, pre_condicao, excecao ou sub_cenario</tipo> <cenario_relacionado>outro cenrio para o qual este restricao, pre_condicao, excecao ou sub_cenario</cenario_relacionado> </conector>

... <cenrio> Aps a anlise das duas abordagens semntica, chegamos concluso de que a abordagem 1 mais sensata, pois diminui o acoplamento entre os cenrios. Ou seja, no momento de consulta documentao de um cenrio no ser necessrio olhar a documentao de outros para verificar que estes relacionam-se com aquele.

Uma outra abordagem possvel seria deixar o tipo <conector> independente dos componentes (cenrios). No escolhemos esta abordagem porque geraria muita redudncia, pois cada conector deveria fazer uma referncia aos dois componentes que conecta. Como nas outras abordagens necessria a referncia a apenas um componente para estabelecer a conexo, escolhemos a abordagem 1 para especificar a linguagem.