Não achei o local correto para a postagem, se este não for o local adequado peço desculpas…
Estou começando a estudar os diagramas e não consegui identificar a diferença entre os diagramas de atividades e de sequências.
Os diagramas de atividades e sequências são baseados nos casos de uso? Para cada caso de uso é feito um diagrama de atividade e outro de sequência??
Basicamente, o diagrama de atividades indica quais são as funcionalidades a serem implementadas, sem dar maiores detalhes de como estas funcionalidades serão aplicadas, como o fluxo das informações será transmitido, qual o tipo de retorno e nem como ou o momento em que o usuário irá interagir com cada uma.
No diagrama de sequência você pode detalhar uma ou várias atividades, detalhando qual a sequência de ações e o fluxo das informações que serão processadas, desde o start (clique de um botão “submit” em um formulário, digitação de algo num campo auto complete, etc) até o final do processamento, onde o resultado da funcionalidade é retornado (uma mensagem de sucesso ou erro, dados gravados no banco de dados, mensagem enviada para uma fila, etc).
Compreendeu?
Entendi.
Mas em um caso de um sistema de vendas, por exemplo, onde o usuário fornece os dados da vendas ou os itens da venda, o usuário que escolhe a ordem que será feita, como representar isso em diagrama de atividades?
Você está tendo sérios problemas com conceitos.
Podemos dizer que o diagrama de sequência vai detalhar, dissecar, ilustrar, a sequência de passos que cada atividade requer para funcionar.
Vamos tentar esclarecer.
Sistema de vendas:
Atividades:
-> Manter estoque
-> Registrar venda
-> Emitir cupom fiscal
-> Emitir nota fiscal
-> Finalizar venda
-> Selecionar forma pagamento
Note que, em nenhum momento eu detalho, senão por uma nomenclatura clara, qual é a atividade.
O diagrama de sequência vai pegar cada uma das atividades e dizer quais passos serão dados pelo(s) ator(es) envolvido(s) e quais serão as ações do sistema, internamente e as invocações externas que este fará, em nível de objetos (objeto da classe que representa o ator, objeto da classe que representa a tela, objeto da classe que corresponde ao negócio, objeto da classe que conversa com o banco de dados, etc), em que as mensagens (ações disparadas pelo ator ou pelo sistema), síncronas ou assíncronas são demonstradas. As mensagens nada mais são do que as chamadas as funcionalidades de um objeto de uma classe (ou da classe, no caso dos métodos estáticos).
Por exemplo, você terá uma classe “TelaVenda” e nela um menu “Selecionar forma pagamento”, vamos dizer que este menu responda ao acionar a tecla “F11”. Existirá uma funcionalidade com nome “selecionarFormaPagamento”, que será invocada de acordo com o acionamento da tecla em questão. É neste nível que o diagrama de sequência tem vida.
Ficou mais claro?
Entendi…
E o diagrama de atividades tem relação com o caso de uso? Para cada caso de uso há um diagrama de atividade?
Sim. Cada caso de um descreve uma funcionalidade do sistema e cada funcionalidade vai ter suas atividades relacionadas.
Com relação a isso, não se atenha aos diagramas em si, mas às especificações de caso de uso. É com base nelas que você faz o desenho macro dos diagramas (casos de uso, atividades) e depois vai detalhando (classes, sequência).
Por exemplo, se tiver um caso de uso com nome Manter Cliente(consultar, incluir, alterar, deletar).
Vou ter 4 diagramas de atividades pra este caso de uso? Um pra consultar, um pra incluir, um pra alterar e outro pra deletar? Ou faço tudo em apenas um diagrama de atividades?
A UML não é algo estático. Você pode optar por detalhar cada uma das atividades presentes neste caso de uso ou, se isso lhe parece exagero, fazer em apenas um diagrama.
Rodrigo, se vc tem um caso de uso Manter Cliente que tem esses fluxos alternativos (alterar, deletar, etc) pode ser feito em um diagrama só, isto é, um caso de uso de uso, um diagrama de atividade.