Finalidade
|
Especificar o comportamento interno do subsistema.
Identificar novas classes de design ou subsistemas de design necessários para satisfazer os
requisitos comportamentais do subsistema.
|
O comportamento externo de um subsistema é definido fundamentalmente pelas interfaces que ele realiza. Quando um
subsistema realiza uma interface, ele se compromete a oferecer suporte a todas as operações definidas por essa
interface. A operação por sua vez pode ser realizada por uma operação em um elemento de design (isto é, Classe de Design ou Subsistema de Design) contido no sistema; essa operação pode exigir
colaboração com outros elementos de design.
As colaborações dos elementos de modelo dentro do subsistema devem ser documentadas através de diagramas de seqüência
que mostram como é o comportamento do subsistema. Cada operação em uma interface realizada pelo subsistema deve conter
um ou mais diagramas de seqüência de documentação. Esse diagrama pertence ao subsistema e é utilizado para projetar o
comportamento interno do subsistema.
Se o comportamento do subsistema for altamente dependente de estado e representar um ou mais encadeamentos de controle,
as máquinas de estado geralmente serão mais úteis na descrição desse comportamento. As máquinas de estado nesse
contexto geralmente são utilizadas em conjunto com as classes ativas para representar uma decomposição dos
encadeamentos de controle do sistema (ou subsistema, nesse caso) e são descritas nos diagramas de estados; consulte Diretriz: Diagrama de Estados. Em sistemas de tempo real, o
comportamento do Produto de Trabalho: Cápsulas também será descrito utilizando
máquinas de estado.No subsistema, talvez haja encadeamentos de execução independentes,
representados por classes ativas.
Em sistemas de tempo real, o Produto de
Trabalho: Cápsulas será utilizado para encapsular esses encadeamentos.
Exemplo:
A colaboração dos subsistemas para executar algum comportamento necessário do sistema pode ser expressa através dos
diagramas de seqüência:
Este diagrama mostra como as interfaces dos subsistemas são usadas para executar um cenário. Especificamente, no caso
do subsistema Network Handling, vemos as interfaces específicas (ICoordinator neste caso) e as operações às quais o
subsistema oferece suporte. Também observamos que os subsistemas NetworkHandling dependem das interfaces IBHandler e
IAHandler.
Observando o subsistema, percebemos como a interface ICoordinator é realizada:
A classe Coordinator atua como "proxy" da interface ICoordinator, manipulando as operações da interface e coordenando o
seu comportamento.
Esse diagrama de seqüência "interno" mostra exatamente quais classes fornecem a interface, o que precisa acontecer
internamente para que a funcionalidade do subsistema seja fornecida e quais classes enviam mensagens a partir do
subsistema. O diagrama esclarece o design interno e é essencial para subsistemas com designs internos complexos. Ele
também permite que o comportamento do subsistema seja facilmente compreendido, tornando-o reutilizável entre os vários
contextos.
Criando esses diagramas de "realização de interface", talvez seja necessário criar novas classes e subsistemas para
executar o comportamento necessário. O processo é similar ao definido em Análise de Caso de Uso, mas, em vez de Casos
de Uso, estamos trabalhando com operações de interface. Para cada operação de interface, identifique as classes (ou, em
alguns casos em que o comportamento necessário seja complexo, um subsistema armazenado) do subsistema atual que são
necessárias para executar a operação. Crie novas classes/subsistemas quando as classes/subsistemas existentes não
puderem fornecer o comportamento necessário (mas tente reutilizá-los primeiro).
A criação de novos elementos de design deve impor a reconsideração do limite e do conteúdo do subsistema. Tenha cuidado
para não ter uma mesma classe em dois subsistemas diferentes. A existência de uma classe desse tipo fará, talvez, com
que as fronteiras do subsistema não sejam bem delimitadas. Revisite periodicamente a Tarefa:
Identificar Elementos de Design para reequilibrar as responsabilidades do subsistema.
Às vezes, é útil criar dois modelos internos separados do subsistema - uma especificação direcionada para o cliente do
subsistema e uma realização direcionada aos implementadores. A especificação deve incluir colaborações e classes
"ideais", para descrever o comportamento do subsistema em termos de colaborações e classes ideais. A realização, por
outro lado, corresponde mais estreitamente à implementação e pode evoluir para a implementação. Para obter
informações adicionais sobre a realização e especificação do Subsistema de Design, consulte Diretriz do Produto de Trabalho: Subsistema de Design, Realização e Especificação do
Subsistema.
|