Diretriz: Cápsula
Esta diretriz descreve o conceito de software em tempo real de Cápsula.
Relacionamentos
Descrição Principal

Tópicos

Portas

Como as portas estão no limite de uma cápsula, elas podem ser 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. No entanto, quando vistas de dentro da cápsula, as portas podem ser de dois tipos: portas de transmissão e portas finais. A diferença está nas suas conexões internas - as portas de retransmissão 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 transmissão servem para exportar seletivamente as "interfaces" de subcápsulas internas enquanto as portas finais são objetos de limite para a máquina de estado de uma cápsula. Ambas as portas podem aparecer no limite da cápsula e, como mencionado, não podem ser distinguidas de fora.

Portas de Transmissão

Portas de retransmissão são portas pelas quais simplesmente todos os sinais são transmitidos. Elas fornecem uma "abertura" no shell de encapsulamento de uma cápsula que pode ser utilizada por suas subcápsulas para se comunicarem com o mundo externo sem serem realmente expostas ao mundo externo (e vice-versa). Uma porta de transmissão é conectada, por meio de um conector, a uma subcápsula e, normalmente, também é conectada de fora a alguma outra cápsula "no mesmo nível". 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 retransmissão 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 transmissão só podem aparecer no limite de uma cápsula e, conseqüentemente, sempre têm visibilidade pública.

Portas Finais

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 retransmissão 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 retransmissão, as portas de extremidade podem aparecer no limite de uma cápsula com visibilidade pública. Essas portas são chamadas de portas finais 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 utilizadas pela máquina de estado para se comunicarem com suas subcápsulas ou com camadas de suporte para implementação externas. As portas finais internas são chamadas de portas finais protegidas, pois 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 retransmissão, 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 retransmissão 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 de Portas

De um ponto de vista externo, uma porta é uma porta; não é possível, nem desejável determinar se uma porta é uma porta de retransmissão 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 da porta de extremidade/porta de retransmissão é indicada graficamente, conforme mostrado a seguir.

Diagrama descrito no texto associado.

Notação da porta - diagrama de comunicação (visualização interna)

Acionadores Baseados em Portas

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 acionador é denominado acionador baseado em portas. 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

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 utilizando máquinas de estado padrão da UML.

Serviço de Tempo

Como é previsível, na maioria dos sistemas em tempo real, o tempo é a preocupação principal. Em geral, duas formas de situações baseadas em tempo precisam ser modeladas: a capacidade de acionar tarefas em uma determinada hora do dia e a capacidade de acionar tarefas após a expiração de um certo intervalo a partir de um determinado momento.

A maior parte dos sistemas em tempo real requer um recurso de cronometragem (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 "tempo limite" ao chegar uma determinada hora do dia ou quando expirar um determinado intervalo.

Taxionomia de Cápsulas

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.

Realização de Modelo de Função Modelo de Função Tipificada Realização de Função Tipificada Realização de Função Cápsula Modelo de Função Tipo de Função Diagrama descrito no texto associado.

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 é útil apenas para definir um "sinalizador de substituição" que será refinado mais tarde.

  • Tipo de Função

    A cápsula "tipo de função" 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 é utilizado 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 'tipo de função'.

  • Modelo de Função

    Uma cápsula "modelo de função" 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 é utilizado para definir um "gabarito" para a estrutura de um sistema, cujos 'detalhes' são delegados às cápsulas contidas. 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 de Função

    Uma cápsula "realização de função" define o comportamento (por meio de uma máquina de estado) para a cápsula, mas nenhuma estrutura interna ou interfaces. 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 de Função Tipificada

    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 Função Tipificada

    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 modelo para a interface e a estrutura que pode ser posteriormente especializada, se necessário, por cápsulas derivativas.

  • Realização de Modelo de Função

    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 de modelo de função tipificada', 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.

Representação da UML 2.0

Observe que a representação atual do RUP para Cápsulas baseia-se na notação da UML 1.5. Muito disso pode ser representado em UML 2.0 utilizando o Conceito: Classe Estruturada.

Consulte Diferenças entre a UML 1.x e a UML 2.0para obter informações adicionais.