Este Blog tem objetivo de manter informações sobre o estudo de desenvolvimento de software com UML.

terça-feira, julho 13, 2004

DIAGRAMA DE MÁQUINA DE ESTADOS



O Diagrama de máquina de estados tem por objetivo descrever o comportamento dos estados que objetos podem assumir durante sua existência.

Como assim ?
Na prática serve para documentar os diversos "ESTADOS" que qualificam algum STATUS de alguma coisa, seguem alguns exemplos:
- "Status do cliente" - Cliente Ativo; Cliente Bloqueado - podem ser estados do CLIENTE;
- "Status da Compra" - Pedido Aguardando Fechamento; Pedido Fechado - poderiam ser estados da COMPRA;
- "Status do Caixa" - Caixa Aberto; Caixa Fechado; Caixa Conferido pelo escritório; Caixa Reaberto - podem ser estados do CAIXA;
- "Status do Usuário"- Ativo; Cancelado; Logado; Inválido - podem ser estados do USUÁRIO.

Notação
Um estado no diagrama é representado por um retângulo com cantos arredondados. Pode possui mais de um compartimento separado por um traço, sendo o primeiro compartimento o nome ou a repsentação do estado:



o Segundo compartimento (opcional) identifica as "atividades internas" que descutiremos melhor depois:



O Estado inicial e o final são representados respectivamente pelos símbolos:



TRANSIÇÕES

As transiçoes dos estados são representadas por setas, veja como fica a representação de um diagrama de estado simples:




ENTERPRISE ARCHITECH

O EA tem suporte para esse diagrama, caso não esteja aparecendo o Toolbox "STATE" com os objetos específicos do diagrama de máquina de estados, vá na tela principal do EA verifique em "Manage My Profile..." se na opção "By Role" está selecionado "Show All"

Agora basta criar um novo Diagrama do tipo "State Machine" (Behavior) e arrastar os objetos.


TEM MAIS...

Esse diagrama tem muitas outras características mas achamos melhor deixar para comentar depois (como por exemplo o compartimento das "atividades internas"). Por enquanto, quem já conseguiu criar casos de uso no E.A. já pode tentar dar mais um passo e explorar esse Diagrama de Máquina de Estados, e se alguem descobrir alguma curiosidade, vamos conversar.....

INCLUDE OU EXTEND

O QUE SÃO ?
- Relacioamentos entre casos de uso. As definições são muito parecidas a príncipio e podem causar alguma confusão. Particularmente, eu não havia compreendido a diferença entre eles.No úlitmo livro que estou lendo a autora define :

EXTEND: indica que um caso de uso terá seu procedimento ACRESCIDO de outro caso de uso;
INCLUDE: indica que um caso de uso terá seu procedimento COPIADO no outro caso de uso;

ACRESCIDO, COPIADO - isso pode gerar certa dúvida para decidir qual devemos usar, mesmo porque as duas definições parecem ser a mesma coisa. Eu achei meio confuso, mas adotei como critério diferenciador os conceitos desse último livro que detalho a seguir:

QUAL A DIFERENÇA ?
INCLUDE
- Na versão da UML 2.0,o INCLUDE substituiu o USE, que era utilizado na UML versao 1.2
O INCLUDE é usado para relacionar dois casos e uso, informando que um deles terá seu procedimento "incluído no outro", de forma incondicional, ou seja vai acontecer. Por exemplo:

" CASO DE USO MATRICULAR ALUNO
1. O aluno digita sua matrícula. O sistema deverá verificar se a matrícula é válida. - Include (validar matrícula)
2. ...."

No exemplo, o caso de uso VALIDAR MATRÍCULA está incluído no caso de uso MATRICULAR ALUNO, ou seja em determinado momento vai acontecer VALIDAR MATRÍCULA...

EXTEND
Eu achei que o EXTEND se parece bastante com o INCLUDE. Mas ele "extende" um caso de uso, PODENDO ocorrer em um determinado ponto (cenário). Por exemplo:"

"CASO DE USO EFETUAR PAGAMENTO
4....
5.Escolher forma de Pagamento.
5.1 Se cliente VIP, calcular desconto especial. EXTEND (desconto cliente VIP)
6....


Veja que o caso de uso DESCONTO CLIENTE VIP só ocorre se o Cliente for VIP, não ocorrendo incondicionalmente como o INCLUDE.

QUANDO USAR ?
INCLUDE : Quando você perceber que um determinado trecho do caso de uso, poderá ser utilizados em mais de um caso de uso.
EXTEND: Idem ao INCLUDE com uma diferença: deverá ocorrer de forma condicional.