Tópicos
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 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.
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.
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.
Notação da porta - diagrama de comunicação (visualização interna)
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.
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.
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.
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 é ú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.
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.
|