Artefatos > Conjunto de Artefatos de Análise e Design > Modelo de Design... > Cápsula > Diretrizes

Diretrizes:  Cápsula


Cápsula

Uma cápsula é um padrão de design específico que representa um thread de controle encapsulado no sistema.

Tópicos

Portas Início da página

Como as portas estão na fronteira de uma cápsula, elas são visíveis tanto de fora quanto de dentro da cápsula. Quando vistas de fora, todas as portas apresentam a mesma interface de objeto impenetrável e não podem ser diferenciadas exceto pela sua identidade e pelo papel que assumem no seu protocolo. Todavia, quando vistas de dentro da cápsula, as portas podem ser de dois tipos: portas de relé e portas de extremidade. A diferença está nas suas conexões internas - as portas de relé são conectadas a subcápsulas enquanto as portas de extremidade são conectadas à máquina de estado da cápsula. Em termos gerais, as portas de relé servem para exportar seletivamente as "interfaces" de subcápsulas internas enquanto as portas de extremidade são objetos de fronteira para a máquina de estado de uma cápsula. Ambas as portas podem aparecer na fronteira da cápsula e, como foi observado, não podem ser distinguidas de fora.

Portas de Relé Início da página

As portas de relé são portas que simplesmente passam todos os sinais. Elas fornecem uma "abertura" no shell de encapsulamento de uma cápsula que pode ser usada por suas subcápsulas para se comunicarem com o mundo externo sem serem expostas ao mundo externo (e vice-versa). Uma porta de relé é conectada, através de um conector, a uma subcápsula e, normalmente, também é conectada de fora a alguma outra cápsula "par". Elas recebem sinais de qualquer lado e simplesmente os retransmitem para o outro lado mantendo a direção do fluxo do sinal. Isso é feito sem atraso ou perda de informação, a menos que não haja um conector anexado ao outro lado. Nesse último caso, o sinal é perdido.

As portas de relé permitem a delegação direta (nenhuma sobrecarga) de sinais destinados a uma cápsula para uma subcápsula sem exigir intervenção da máquina de estado da cápsula. As portas de relé só podem aparecer na fronteira de uma cápsula e, por isso, sempre têm visibilidade pública.

Portas de Extremidade Início da página

Para ser útil, uma cadeia de conectores deve terminar em uma porta de extremidade que se comunica com uma máquina de estado. As portas de extremidade são objetos de fronteira para as máquinas de estado das cápsulas (embora, como veremos, algumas delas também servem como objetos de fronteira das cápsulas). As portas de extremidade são fontes e receptores de todos os sinais enviados pelas cápsulas. Esses sinais são gerados pelas máquinas de estado das cápsulas. Para enviar um sinal, uma máquina de estado dispara uma operação de envio ou de chamada em uma das suas portas de extremidade. O sinal é então retransmitido através do conector anexado, possivelmente, passando por uma ou mais portas de relé e conectores encadeados, até encontrar, por fim, outra porta de extremidade, normalmente, em uma cápsula diferente. Como a comunicação baseada em sinais pode ser assíncrona, uma porta de extremidade possui uma fila para conservar as mensagens que foram recebidas, mas ainda não foram processadas pela máquina de estado (isto é, ela funciona como uma caixa de correio). A recepção do sinal e a distribuição da máquina de estado recebida são realizadas pela máquina de estado de acordo com a semântica UML padrão.

Da mesma forma que as portas de relé, as portas de extremidade podem aparecer na fronteira de uma cápsula com visibilidade pública. Elas são chamadas de portas de extremidade públicas. Essas portas são objetos de fronteira tanto da máquina de estado quanto da cápsula recipiente. Contudo, as portas de extremidade também podem aparecer inteiramente dentro da cápsula como parte da sua estrutura de implementação interna. Essas portas são usadas pela máquina de estado para se comunicarem com suas subcápsulas ou com camadas de suporte para implementação externas. Essas portas de extremidade internas são chamadas de portas de extremidade protegidas, pois elas possuem visibilidade protegida.

Observe que o tipo de porta é determinado pela sua conectividade interna e sua visibilidade de fora da cápsula; os vários termos (porta de relé, porta de extremidade pública, porta de extremidade privada) são apenas terminologia abreviada. Uma porta pública que não esteja internamente conectada pode se tornar uma porta de relé ou uma porta de extremidade, dependendo de como ela será conectada posteriormente, ou ela pode permanecer desconectada e ser um receptor de sinais de entrada.

Visibilidade da Porta Início da página

De um ponto de vista externo, uma porta é uma porta; não é possível, nem desejável, determinar se uma porta é uma porta de relé ou de extremidade. No entanto, quando a decomposição de uma cápsula é mostrada, podemos ver o interior da cápsula e a distinção porta de extremidade/porta de relé é indicada graficamente como mostrado abaixo.

Notação da porta - diagrama de colaboração (visão interna)

Triggers Baseados em Portas Início da página

Na prática, sempre acontece que duas ou mais portas da mesma cápsula usem o mesmo protocolo, mas sejam semanticamente diferentes. Além disso, o mesmo sinal pode aparecer em mais de um papel de protocolo com suporte em diferentes portas de uma cápsula. Em ambos os casos, talvez seja necessário distinguir a porta de extremidade que recebeu o sinal atual. Isso permite que os aplicativos tratem do mesmo sinal de modo diferente, de acordo com a origem do sinal e o estado. Esse tipo de trigger é denominado trigger baseado na porta. Os triggers baseados em portas são modelados em UML usando condições de guarda que verificam uma determinada porta de origem.

Máquinas de Estado Início da página

A especificação da parte da máquina de estado de uma cápsula e a especificação das seqüências válidas de protocolo são feitas usando máquinas de estado em UML.

Serviço de Tempo Início da página

Como é previsível, na maioria dos sistemas de tempo real, o tempo é a preocupação principal. Geralmente, duas formas de situações baseadas no tempo precisam ser modeladas: a capacidade de disparar atividades em uma determinada hora do dia e a capacidade de disparar atividades depois de passado um certo intervalo após um momento específico.

A maior parte dos sistemas de tempo real requer um recurso de marcação do tempo (controlável) explícito e diretamente acessível - um serviço de tempo. Esse serviço, que pode ser acessado através de uma porta padrão (ponto de acesso ao serviço), converte o tempo em eventos que podem ser tratados da mesma forma que outros eventos baseados em sinais. Por exemplo, com um serviço desse, uma máquina de estado pode solicitar que ela seja notificada com um evento de "timeout" ao chegar uma determinada hora do dia ou quando expirar um determinado intervalo.

Taxionomia de Cápsulas Início da página

Cápsulas como um conceito podem ser usadas de várias maneiras diferentes. Para indicar isso, a hierarquia e a taxionomia de uma cápsula podem ser descritas para abordar os usos comuns das cápsulas.

Taxionomia de Cápsulas mostrando hierarquia de generalização

A taxionomia básica de cápsulas é:

  • Cápsula

    Uma cápsula básica, sem portas, estrutura interna ou comportamento, não é de muito interesse - ela não faz muita coisa. Uma cápsula como essa poderia ser usada para definir uma cápsula abstrata da qual se derivam outras cápsulas. Como não há portas, estrutura ou comportamento definido, esse tipo de cápsula serve apenas para definir um "espaço reservado" que será refinado mais tarde.

  • Tipo de Papel

    O "tipo de papel" de uma cápsula consiste em uma definição de cápsula que determina uma cápsula abstrata com uma ou mais portas; não há estrutura ou comportamento definido. Esse tipo de cápsula é usado nos casos em que as "interfaces" (portas) de um conjunto de cápsulas precisam ser definidas uma vez, com as realizações específicas dessas interfaces definidas pelos subtipos da cápsula do 'tipo de papel'.

  • Modelo de Papel

    O "modelo de papel" de cápsula consiste em uma definição de cápsula com uma estrutura interna (definida por uma colaboração de especificação) de cápsulas aninhadas e interconectadas, e, possivelmente, uma ou mais portas. Esse tipo de cápsula é usado para definir um "template" para a estrutura de um sistema, cujos 'detalhes' são delegados às cápsulas recipientes. Se a cápsula de modelo de papel tiver portas, elas definirão as 'interfaces' da cápsula.

    O comportamento do 'modelo de papel' não é especificado (não há máquina de estado definida); o comportamento deve ser definido pelos subtipos da cápsula.

  • Realização do Papel

    A "realização do papel" de uma cápsula define o comportamento (através de uma máquina de estado) para a cápsula, mas nenhuma estrutura interna ou interface. Ela fornece basicamente uma definição abstrata do comportamento de todas as cápsulas derivativas, que, por sua vez, devem definir sua própria estrutura interna e interface. A definição de comportamento pode ser vista como uma 'declaração de design' que deve ser satisfeita por todas as cápsulas derivadas da cápsula de 'realização do papel'.

Existem três híbridos úteis desses tipos básicos, que representam combinações das definições básicas:

  • Realização do Papel Representado

    Esse tipo de cápsula define uma interface e um comportamento de um conjunto de cápsulas, mas não restringe a estrutura interna de cápsulas derivativas. Ele é basicamente uma cápsula de 'realização de papel' que define ainda mais uma interface.

  • Modelo de Papel Representado

    Esse tipo de cápsula define uma interface e a estrutura de um conjunto de cápsulas, mas não restringe o comportamento dessas cápsulas. O benefício de se fazer isso é definir um template para a interface e a estrutura que pode ser posteriormente especializada, se necessário, por cápsulas derivativas.

  • Realização do Modelo de Papel

    Esse tipo de cápsula define uma estrutura interna para a cápsula e seu comportamento abstrato, mas não define a interface. Esse tipo de cápsula é útil nos casos em que várias cápsulas podem compartilhar uma quantidade significativa de estrutura interna e comportamento, mas têm interfaces diferentes.

O último tipo de cápsula, a 'realização do modelo de papel representado', que define estrutura e interface, além do comportamento no nível abstrato (para a interface) e no nível específico (para a estrutura interna), é complexo e de difícil compreensão, muito menos implementa corretamente. Ele é mencionado para o caso em que testes unitários na cápsula precisem ser definidos como parte da própria cápsula, daí as duas máquinas de estado separadas. Na maioria dos casos, é melhor evitar essa construção.


Copyright  © 1987 - 2001 Rational Software Corporation


Exibir o Rational Unified Process usando quadros

Rational Unified Process