Comentários
O diagrama de sequência representa a ordem temporal em que as mensagens são trocadas entre os objetos envolvidos na execução de um processo.
Fonte: Shutterstock.
Deseja ouvir este material?
Áudio disponível no material digital.
Caro aluno, seja bem-vindo à seção sobre modelagem de interações com o diagrama de sequência!
Nesta seção vamos continuar a modelagem dinâmica do sistema para detalhar a comunicação entre os objetos do sistema a partir do diagrama de sequência, um dos diagramas de interação da UML. É preciso lembrar que os diagramas de interação representam um subgrupo dos diagramas comportamentais e visam mostrar uma interação, formada por um conjunto de objetos e seus relacionamentos, detalhando as mensagens que são enviadas entre eles. Em geral, a modelagem de um sistema tem vários diagramas de interação, e esse conjunto, com todos os diagramas de interação especificados, constitui o seu modelo de interações.
O diagrama de sequência tem o objetivo de representar a ordem temporal em que as mensagens são trocadas entre os objetos envolvidos na execução de um processo, que foi especificado como um caso de uso.
Assim, você vai conhecer e compreender os conceitos, os componentes, a notação gráfica de cada elemento do diagrama e as orientações para proceder com a construção do diagrama de sequência.
Na especificação dos requisitos funcionais do sistema, cada um deles foi representado no diagrama de casos de uso como um caso de uso e, para documentá-lo com a descrição de seu funcionamento interno, recomenda-se elaborar a descrição do cenário do caso de uso no formato de roteiro detalhado, com o relato do seu cenário principal e eventuais cenários alternativos, ou no formato simplificado. Quem define o melhor formato de documentar um caso de uso é o analista de sistemas, com sua equipe de desenvolvedores, mediante a metodologia definida pela empresa de desenvolvimento.
E será que só a documentação de cada caso de uso, no formato de roteiro, é suficiente para o entendimento de seu funcionamento interno?
Não! Não é suficiente. Além do relato de funcionamento de cada caso de uso, independentemente do formato adotado, é importante especificar de que forma os objetos do sistema interagem no funcionamento do caso de uso e quais informações devem ser enviadas em uma mensagem de um objeto para o outro e, ainda, em que ordem!
Então, a partir desta seção, você compreenderá como os diagramas de interação consolidam o entendimento sobre os aspectos dinâmicos do sistema e avançaremos na modelagem comportamental dele para a agência de estágios e intercâmbios, elaborando o diagrama de sequência para o caso de uso que representa a funcionalidade de realização de entrevista de estágio.
Vamos avançar com a modelagem comportamental do sistema de hotelaria, módulo Recepção, descrita na Seção 3.1. A partir da descrição do contexto do módulo Recepção que concentra as rotinas da recepção do hotel, incluindo o controle de reservas, vamos priorizar a modelagem da interação que corresponde ao processo de reserva realizada por um hóspede. Assim, o relato de como funciona essa atividade de reserva, de responsabilidade da recepção do hotel, é descrito a seguir.
Um hóspede, para se hospedar no hotel, tem que ter um cadastro com seus dados pessoais efetuado previamente e tem que ter uma reserva prévia realizada por ele (por telefone, por aplicativo ou pela Web) ou pela empresa que o hóspede tem vínculo. Sendo a empresa responsável pela estada do hóspede, ela também é a responsável em custear integralmente as despesas referentes as diárias e as despesas referentes as refeições (ela pode custear ou não).
Uma reserva é mantida por: nome da(s) pessoa(s) que irá(ão) se hospedar em um apartamento, data que efetuou a reserva, data de entrada, hora prevista de entrada, data de saída, quantidade de adultos, quantidade de crianças, idade das crianças e nome da empresa que trabalha (se for a empresa responsável pela estada do hóspede). Um hóspede ou uma empresa pode realizar várias reservas.
A Figura 3.7 ilustra um recorte do Diagrama de Casos de Uso especificado para a atividade de Análise, ilustrando parte dos casos de uso identificados para atenderem as funcionalidades descritas no módulo de Recepção do sistema de hotelaria, correspondente ao caso de uso “Realizar Reserva”.
A próxima Figura apresenta um recorte do Diagrama de Classes, demostrando as classes que foram definidas para a manipulação dos objetos “Reserva”.
Elabore o diagrama de sequência correspondente ao caso de uso “Realizar Reserva”, representando o cenário principal e considerando as classes de objetos definidas na Figura 3.8.
Bom trabalho!
Boa leitura e bons estudos!
Caro aluno, nesta seção avançaremos os estudos sobre a modelagem dinâmica do sistema!
Usualmente, a modelagem comportamental do sistema inicia-se com o modelo de casos de uso, o qual descreve os requisitos funcionais do sistema e os atores que interagem com o sistema, respondendo, assim, o que o sistema deve fazer e para quem. No entanto, o modelo de casos de uso não expõe o comportamento interno das funcionalidades especificadas. Para isso, a UML contempla os diagramas de interação, que representam um subgrupo dos diagramas comportamentais.
Os diagramas de interação mostram como os objetos do sistema agem internamente para apoiarem a realização das funcionalidades representadas pelos casos de uso, consolidando, assim, o entendimento dos aspectos dinâmicos do sistema. Os diagramas de interação da UML são: diagrama de sequência, diagrama de comunicação, diagrama de visão geral de interação e o diagrama de tempo.
Pense em como você poderá visualizar um sistema em execução e compreender a relação entre todos os objetos que participam da realização de cada funcionalidade. Uma melhor forma de representar esse funcionamento é construindo roteiros de cenários, descrevendo passo a passo a interação entre os objetos que participam da execução dos casos de uso e as mensagens que são trocadas entre eles. Outra opção é desenhar o protótipo correspondente à interface dos casos de uso para completar a compreensão dos cenários. Além dessas orientações, para se familiarizar com o funcionamento do sistema, é necessário completar e validar a modelagem de cada caso de uso com os diagramas de interação.
Segundo Guedes (2018), a interação entre objetos para dar suporte à funcionalidade de um caso de uso denomina-se realização de um caso de uso, o qual descreve o comportamento de um ponto de vista interno ao sistema, sendo que a realização de um caso de uso é representada por diagramas de interação.
Uma das formas mais utilizadas de se especificar a interação entre os objetos é a ênfase à ordenação temporal das mensagens, representando a sequência lógica da troca de mensagens formada por um conjunto de objetos e seus relacionamentos a partir da adoção do diagrama de sequência, o qual é uma forma de representar a ordem temporal em que as mensagens são trocadas entre os objetos envolvidos na execução de um processo.
Conforme Guedes (2018), o diagrama de sequência descreve a ordem temporal em que as mensagens são trocadas entre os objetos envolvidos na execução de um processo que representa um caso de uso, bem como no ator responsável pela interação com os objetos.
De acordo com Booch, Jacobson e Rumbaugh (2006, p. 243), o diagrama de sequência é “um diagrama de interação que dá ênfase à ordenação temporal de mensagens. Graficamente, um diagrama de sequência é uma tabela que mostra objetos distribuídos no eixo X e mensagens, em ordem crescente no tempo, no eixo Y”.
O diagrama de sequência baseia-se no diagrama de casos de uso, em que é elaborado um diagrama de sequência para cada caso de uso, que se apoia no diagrama de classes para determinar os objetos das classes que realizam o caso de uso, com a indicação das mensagens trocadas entre os objetos, que são, na maioria das vezes, as operações das classes.
Os diagramas de interação representam um subgrupo dos diagramas comportamentais, enfatizando a modelagem dinâmica do sistema para demostrarem o funcionamento interno dos casos de uso. Dessa forma, você conseguiu compreender como os diagramas comportamentais se complementam e por que devem ser consistentes com o diagrama estrutural – diagrama de classes?
Agora vamos conhecer e compreender os elementos que constituem o diagrama de sequência.
Um diagrama de sequência é construído e representado pelos seguintes elementos: ator, mensagens, objetos, linha de vida e foco de controle. A notação gráfica dos principais elementos que podem compor o diagrama de sequência e uma breve descrição de cada elemento é apresentada no Quadro 3.3 a seguir.
Notação |
Elemento |
---|---|
![]() |
Linha de vida: representa a existência de um elemento (objeto ou ator) participante da realização do caso de uso em um período de tempo. É representada por uma linha vertical tracejada abaixo do elemento, chamada de cauda. |
![]() |
Ator: representa os mesmos atores já criados no diagrama de casos de uso; são apoiados por uma linha de vida e enviam mensagens para os objetos como uma forma de interação para solicitarem a execução de uma operação ou simplesmente o envio de informações. No diagrama sempre representa o ator primário responsável por enviar a mensagem inicial, que começa a interação entre os objetos. |
![]() |
Objeto: representa os objetos que participam da realização do caso de uso; são também apoiados por uma linha de vida, que juntamente com os atores, formam um cabeçalho para o diagrama. Um objeto pode existir desde o início da interação ou ser criado ao longo da dela. Um objeto é representado por um retângulo com um nome único, conforme o padrão da notação de objeto. |
![]() |
Foco de controle: representa o período de tempo durante o qual um elemento executa uma ação, diretamente ou não. É representado por um retângulo estreito na vertical sobre a linha de vida, podendo aparecer diversas vezes ao longo dela. |
![]() |
Mensagem síncrona: a mensagem é síncrona quando o emissor aguarda o retorno para continuar com a interação. São as mensagens comumente utilizadas no diagrama de sequência. É representada por uma linha horizontal com uma seta sólida na extremidade. |
![]() |
Mensagem assíncrona: a mensagem é assíncrona quando o emissor continua enviando mensagens sem aguardar o retorno, com isso o elemento receptor da mensagem assíncrona não precisa atendê-la imediatamente. É representada por uma linha horizontal com uma seta aberta. |
![]() |
Mensagem de retorno: é uma mensagem que um objeto envia ao outro em resposta à mensagem recebida após a execução de uma ação. As mensagens de retorno são representadas por uma linha tracejada com uma seta na extremidade, apontando para o elemento que recebe a resposta. |
![]() |
Mensagem reflexiva ou automensagem: é uma mensagem indicativa de que o objeto remetente da mensagem é também o receptor. A mensagem reflexiva é representada por uma seta que sai do objeto e retorna para ele mesmo. |
![]() |
Mensagem construtora: indica o momento em que o objeto passa a existir no sistema, ou seja, o objeto é instanciado ao longo do processo por uma mensagem enviada. A mensagem construtora é representada por uma linha tracejada com seta na extremidade, apontando para o centro do objeto criado. O retângulo que representa o objeto é posicionado mais abaixo no diagrama. |
![]() |
Mensagem destrutora: indica a destruição do objeto no decorrer da interação, o qual não se mostra mais necessário no processo. É representado pelo símbolo X na parte inferior da linha de vida do objeto que está sendo destruído. |
![]() |
Quadro de interação: representa uma interação independente, possibilitando isolar um diagrama de sequência com um contexto específico, formando uma fronteira para que possa ser integrado aos demais diagramas de sequência. O quadro é representado graficamente por um retângulo com um rótulo no canto superior esquerdo, que identifica o tipo do quadro. |
![]() |
Nota ou comentário: serve para escrever observações aos elementos que compõe o diagrama de sequência, contendo informações úteis para os desenvolvedores, porém não expressa força semântica específica aos elementos do diagrama. |
Nos diagramas de interação, como no diagrama de sequência, as mensagens representam a solicitação que um elemento envia para o outro com o objetivo de executar uma ação, demostrando a ocorrência de eventos. O objeto que envia a mensagem denomina-se objeto emissor ou remetente, e o objeto que recebe a mensagem denomina-se objeto receptor. As possíveis trocas de mensagens que podem acontecer entre os elementos do diagrama são:
A Figura 3.9 ilustra a interação entre os elementos do diagrama de sequência com os tipos de mensagens possíveis.
Nos diagramas de interação, as mensagens representam a solicitação que um elemento envia para o outro com o objetivo de executar uma ação, demostrando a ocorrência de eventos. As possíveis trocas de mensagens que podem acontecer entre os elementos do diagrama de sequência são: ator e ator; ator e objeto; objeto e objeto; objeto e ator. Contudo, a troca de mensagens entre os elementos ator e objeto ou entre objeto e ator sempre deve referenciar um objeto que representa a interface do caso de uso.
Além da representação da troca de mensagens entre os elementos do diagrama de sequência, é importante indicar o conteúdo da mensagem enviada pelo remetente, o qual especifica informações a serem passadas para o elemento receptor denominado rótulo da mensagem. Os rótulos podem indicar:
Juntamente com o rótulo da mensagem, também pode-se indicar uma condição de guarda que estabelece uma regra ou condições para que uma mensagem possa ser disparada. As condições de guarda são descritas entre colchetes na mensagem.
Na representação dos objetos do diagrama de sequência, pode-se adotar os estereótipos do diagrama de classes para melhor compreensão das interações entre os objetos, tais como: <<boundary>>, <<control>> e <<entity>>; sendo:
A Figura 3.10 ilustra uma parte de um diagrama de sequência para exemplificar a notação gráfica dos estereótipos das classes. O elemento “Formulario:Inscricao” representa uma classe de fronteira que faz a interação com o ator “Candidato” e com o elemento “ControladorInscricao”, representando uma classe de controle responsável pela mediação do tratamento das regras de negócio com o elemento “inscrição:Inscricao”, que representa uma classe de entidade persistente na interação.
Na representação do diagrama de sequência, também é possível utilizar fragmentos de interação e fragmentos combinados que possibilitam o alinhamento de interações, sendo que cada fragmento representa uma interação independente, formando uma fronteira entre os elementos do diagrama. Nesse sentido, é recomendável representar os fragmentos apenas se de fato contribuírem para a compreensão da interação.
Um fragmento de interação, também denominado de ocorrência de interação, representa a ocorrência de um outro diagrama de interação da UML, sendo que, na representação do diagrama de sequência, indica outro diagrama de sequência.
Na notação gráfica do quadro de interação, identifica-se o rótulo com a expressão “ref” e, no centro do quadro, descreve-se o nome do diagrama de sequência referenciado. Nos fragmentos de interação, pode-se utilizar do elemento chamado “portões (gates)” para relacionar uma mensagem fora de um fragmento de interação com uma mensagem dentro do fragmento de interação, estabelecendo uma interface entre fragmentos, ou seja, um ponto de conexão.
Um fragmento combinado é utilizado para definir o fluxo de controle da interação, correspondendo a uma sequência de mensagens encapsuladas em um fragmento, compondo um procedimento que pode ser reutilizado em demais diagramas de sequência. Os fragmentos combinados são representados pelo elemento quadro de interação com uma identificação no rótulo, que descreve o tipo de operador de interação, que pode ser (BEZERRA, 2014):
Os fragmentos do diagrama de sequência podem ser de dois tipos: fragmentos de interação e fragmentos combinados. Um fragmento de interação representa a ocorrência de um outro diagrama de sequência e o fragmento combinado é utilizado para definir o fluxo de controle da interação, correspondendo a uma sequência de mensagens agrupadas em um fragmento, que compõe um procedimento.
A Figura 3.11 ilustra um exemplo de diagrama de sequência correspondente ao caso de uso “Encerrar Conta”, que contém o fragmento de interação “Emitir Saldo” e o fragmento combinado do tipo alternativa, contendo dois fragmentos de interação – “Realizar Saque” e “Realizar Depósito”.
Para elaborar um diagrama de interação, é necessário um diagrama de casos de uso com a descrição do roteiro dos cenários dos casos de uso e também do diagrama de classes. Em geral, durante a construção de um diagrama de interação, é comum identificar novas classes, atributos e principalmente a definição das operações, bem como uma descrição refinada dos cenários dos casos de uso. Dessa forma, os diagramas de interação da UML reforçam o apoio ao desenvolvimento incremental de sistemas orientados a objetos a partir de modelos que podem evoluir com a inclusão de novos detalhes.
A Figura 3.12 representa a relação entre o diagrama de casos, com sua documentação, e um projeto do protótipo da interface gráfica correspondente ao caso de uso descrito, além do diagrama de classes, cuja finalidade é identificar a classe ou classes de objetos que participam da realização de cada caso de uso para, assim, construir o diagrama de interação pretendido, especificando a troca de mensagens entre os objetos.
Os seguintes passos são recomendados para construir o diagrama de sequência correspondente a cada caso de uso:
A Figura 3.13 ilustra um exemplo de diagrama de sequência correspondente ao cenário principal do caso de uso Realizar Inscrição do Evento com a indicação de seus elementos. O elemento 1 representa o ator “Participante”, já indicado no diagrama de casos de uso. O elemento 2 representa o elemento linha de vida, que acompanha cada objeto ou ator do diagrama. O elemento 3 representa o objeto “Evento” e, na sequência, os demais objetos “Pessoa” e “Inscricao”. O elemento 4 representa o foco de controle sobre a linha de vida do ator “Participante”. O elemento 5 representa uma mensagem enviada pelo ator participante e recebida pelo objeto “tela : Inscrição”, que dispara mensagens simples e mensagens que invocam operações, sendo a mensagem identificada pela numeração 3.1 “carregarEvento( )”, enviada pelo objeto “tela : Inscrição” para o objeto “ControladorInscricao”, é uma mensagem síncrona que dispara a operação “carregarEvento( )”.
Nos diagramas de interação, a mensagem assíncrona ocorre quando o emissor continua enviando mensagens sem aguardar o retorno. Com isso, o elemento receptor da mensagem assíncrona não precisa atendê-la imediatamente. A Figura 3.14 ilustra um exemplo de mensagem assíncrona representada em uma parte de um diagrama de sequência, cujo objeto ControladoraVendas envia a mensagem assíncrona autorizarPagamento() para a classe OperadoraCartão e não aguarda um retorno dessa mensagem para continuar com o processo.
Bezerra (2014) afirma que a modelagem dinâmica de um sistema não é algo simples e que, em sistemas complexos, há vários caminhos que podem ser adotados para definir a execução do sistema. Nesse contexto, a melhor alternativa é trabalhar iterativamente, ou seja, elaborar os modelos de casos de uso e de classes inicialmente e, posteriormente, desenvolver os modelos de interações e de estados para só então retornar aos modelos iniciais e verificar a consistência entre os modelos.
BEZERRA, E. Princípios de análise e projeto de sistemas com UML. 3. ed. Rio de Janeiro: Elsevier, 2014.
BOOCH, G.; JACOBSON, I.; RUMBAUGH, J. UML: guia do usuário. 2. ed. Rio de Janeiro: Campus, 2006.
DRLJAČA, D.; LATINOVIĆ, B.; STARČEVIĆ, D. Modelling the Process of Is Auditing in the Public Administration Using Uml Diagrams. Journal of Information Technology & Applications, [S. l.], v. 7, n. 1, p. 32-41, 2017.
Disponível em: https://bit.ly/357w9Pz. Acesso em: 21 maio 2020.
FOWLER, M. UML essencial: um breve guia para a linguagem-padrão de modelagem de objetos. 3. ed. Porto Alegre: Bookman, 2005.
GUEDES, G. T. A. UML: uma abordagem prática. 3. ed. São Paulo: Novatec, 2018.