Baixe o app para aproveitar ainda mais
Prévia do material em texto
- -1 MODELAGEM DE SISTEMAS DIAGRAMA DE INTERAÇÃO, COM ÊNFASE EM SEQUÊNCIA - -2 Olá! Bom dia! Nesta aula, abordaremos o conceito do tripé da análise, composta pelo diagrama e especificações de casos de uso, diagrama de classes e diagrama de sequência. Vamos aprender que os diagramas de interação, que podem ser o diagrama de sequência ou de comunicação, têm total interação com casos de uso e classes, na medida em que mostram como as classes interagem para realizar o passo a passo de cada cenário do caso de uso. Bons estudos! Objetivos Ao fim desta aula, você deverá ser capaz de cumprir os objetivos abaixo descritos: 1. Identificar a finalidade dos diagramas de interação; 2. Distinguir os dois diagramas de interação: sequência e comunicação; 3. Reconhecer quando usar o diagrama de sequência e o de comunicação; 4. Identificar os conceitos e elementos do diagrama de sequência; 5. Reconhecer que os diagramas de interação ajudam na identificação de novas classes e novos métodos para as classes; 6. Identificar como se derivam os diagramas de sequência, a partir do diagrama de casos de uso, das especificações textuais dos casos de uso e do diagrama de classes. Diagramas de interação Os implementam as funcionalidades que oferecem, pelasistemas orientado a objetos troca de mensagens ou seja, um objeto envia uma mensagem a outro quando deseja que este realize uma tarefa.entre os objetos, Baseado nesse contexto, podemos entender de que forma os atuam. Vamos entender diagramas de interação isso partindo do conceito de diagrama de casos de uso e diagrama de classes. Veja: O d apresentam as funcionalidades.iagrama de casos de uso O mostra a estrutura (nome, atributos e métodos) diagrama de classes e relacionamentos entre as classes necessárias ao sistema. Os mostram como as classes (na verdade, os objetos) trocam , ou seja,diagramas de interação mensagens interagem para oferecer uma funcionalidade (ou realizar um caso de uso). - -3 Tipos de diagramas de interação Os diagramas de interação, de uma forma geral, mostram como as classes colaboram em determinados Visam ilustrar como os objetos interagem, por meio de mensagens.comportamentos. São dois tipos de diagramas de interação: o e o . diagrama de sequência diagrama de comunicação Veja algumas características desses dois tipos de diagramas de interação: • De uma forma genérica, o é o mais rico dos dois, mas o diagrama de diagrama de sequência comunicação também tem sua finalidade, na medida em que é . Cada mais flexível quanto ao desenho um dos diagramas de interação tem suas vantagens e desvantagens que os tornam úteis em diferentes situações. • De uma forma geral, ambos visam estabelecer a integração entre o diagrama de classes e o , mostrando como as diagrama de especificações textuais dos casos de uso classes colaboram na (um caso de uso é um conjunto de cenários de uso).realização de um cenário de uso • Uma das grandes contribuições dos diagramas de interação é a identificação de novos métodos para as classes e ainda a ajuda na identificação de qual classe deve conter um determinado método. A oferece algumas , e o é oUML, em sua versão 2.0, formas de modelar interações diagrama de sequência mais usado deles. O outro é o , que nas versões anteriores à 2.0 da UML era chamadodiagrama de comunicação de diagrama de colaboração. A seguir, veja algumas diretrizes sobre os diagramas de interação: • Num mesmo projeto, podemos até usar os dois diagramas de interação, mas para representar interações ou comportamentos diferentes. • Não faz sentido usar ambos, por exemplo, para representar um mesmo cenário de uso, pois eles têm o mesmo objetivo, porém focos diferentes. • Para cenários, casos de uso ou comportamentos diferenciados, podemos optar por um dos dois. Mas em geral, usa-se apenas um deles por todo o projeto. Comparativo entre os diagramas de interação Como vimos, os diagramas de interação : epodem ser de dois tipos diagrama de sequência diagrama de Cada um tem sua vantagem, que por sua vez atua como desvantagem para o outro. Veja, a seguir,comunicação. um comparativo das vantagens, quando usar, pontos fortes e fracos de cada tipo de diagrama: • Diagrama de Sequência Saiba mais Uma mensagem representa a solicitação que um objeto requisitante faz a um objeto receptor para que este execute uma das operações definidas em sua classe. • • • • • • • - -4 Vantagens: • Há como saber a ordem de envio das mensagens, com bastante clareza. Já no diagrama de colaboração, o conhecimento da sequência das mensagens ocorre pela inserção da numeração das mensagens; • O diagrama de sequência é oportuno, pelo fato de focar a temporalidade (daí o nome sequência) da interação, que é relevante. Quando usar: • Devemos usar o diagrama de sequência quando o foco for a sequência das mensagens no decorrer do tempo. • Diagrama de Comunicação Vantagens: • Normalmente permite construir modelos mais legíveis, comparativamente aos diagramas de sequência; • O diagrama de comunicação foca nas mensagens enviadas entre objetos que estão relacionados. Quando usar: • Devemos usar o diagrama de comunicação quando o foco forem as mensagens enviadas entre os objetos que estão relacionados. • Diagrama de Sequência Pontos fortes: • Mostra com clareza a sequência temporal das mensagens; • Amplo conjunto de opções de notação. Pontos fracos: • A cada novo objeto, o diagrama cresce para a direita, consumindo espaço na horizontal, e se muitos objetos participam, dificulta o desenho e leitura. • Diagrama de Comunicação Pontos fortes: • Economia de espaço ao modelar — flexibilidade ao adicionar novos objetos, em qualquer direção do desenho. Pontos fracos: • Difícil perceber a sequência das mensagens, sendo necessária sua numeração sequencial; • Menos opções de notação. O tripé da análise Do ponto de vista da fase de análise de sistemas, existem três modelos que se integram e formam uma base . São eles:mínima para a modelagem e documentação de sistemas • Diagrama de casos de uso e especificações de casos de uso; • • • • • • • • • • • • • • • • - -5 • Diagrama de casos de uso e especificações de casos de uso; • Diagrama de classes; • Diagrama de sequência ou diagrama de colaboração. Esses três diagramas formam o chamado . Veja essa relação na figura abaixo:tripé da análise Casos de uso (em suas especificações) — Especificam o comportamento do sistema (ou parte dele), descrevendo as funcionalidades deste. O caso de uso é um conjunto de cenários, no qual: • O cenário é uma sequência de passos que descreve uma interação entre o sistema e um usuário; • Todo caso de uso tem o cenário principal, que é o “caminho sem erros”, ou seja, tudo acontece sem nenhum problema ou exceção; • A cada problema ou exceção, pode-se derivar um novo cenário, mostrando como o sistema vai se comportar. O de classes mostra as classes do domínio do problema.diagrama conceitual O mostra a interação (como trocam mensagens) entre os objetosdiagrama de sequência ou comunicação (classes) de um determinado cenário (caso de uso). O Diagrama de Sequência A partir de agora vamos conhecer as especificidades do .diagrama de sequência Você já sabe que o diagrama de sequência visa mostrar como as classes envolvidas interagem (trocam mensagens) para a realização de um caso • • • • • • - -6 de uso, mais especificamente de um cenário de uso (parte de um caso de uso), ao longo da linha do tempo. O foco aqui é a .sequência da troca de mensagens Assim, o diagrama de sequência mostra o passo a passo da especificação do cenário de uso, evidenciando as classes relacionadas e como elas trocam mensagens entre si, conforme ilustra a imagem (trecho de diagrama de sequência) a seguir: Fique ligado A mensagem em um diagrama de sequência representa um método que pertence à classe do objeto que recebe a mensagem. Vide a classe Cliente, a seguir, com o método Procurar Cliente(). - -7 O enviauma mensagem de nome Procurar Cliente() ao objeto Cliente.objeto Controlador O Diagrama de Sequência e seus Elementos Dentre os de um diagrama de sequência, podemos destacar:elementos principais • Os objetos participantes da interação são organizados na horizontal; • Abaixo de cada objeto, existe uma linha pontilhada (linha de vida); • Cada linha de vida possui o seu foco de controle (caixa de ativação); • O foco de controle indica que o objeto está fazendo algo; • As mensagens entre objetos são representadas com linhas horizontais rotuladas, partindo da linha de vida do objeto remetente e chegando à linha de vida do objeto receptor. Representando decisões no diagrama de sequência Muitas vezes, precisamos representar que determinadas mensagens serão enviadas ou não de acordo com a chamada condição de guarda; ou ainda representar um (noconjunto de mensagens mutuamente exclusivas qual, dentre várias mensagens possíveis, apenas uma delas é enviada). Na imagem a seguir, vemos um trecho de diagrama de sequência, no qual representamos a decisão. Observe que temos o retângulo, com uma linha tracejada dentro, com o rótulo de nome “alt”, indicando um fragmento alternativo para a lógica condicional de exclusão mútua, expresso em guardas. Na parte de cima, inicial do retângulo, temos a condição de guarda [Tipo Cliente =F] e na parte de baixo, após a linha tracejada, temos outra condição de guarda [Tipo Cliente = J]. Descrição: 1. O ator informa o tipo de cliente, que pode ser F (física) ou J (jurídica); • • • • • - -8 2. Se o Tipo Cliente = F (primeira condição de guarda) = VERDADE, executa-se as mensagens que estão associadas a essa condição, ou seja, as mensagens que estão antes da linha tracejada; a. Ator informa os dados da pessoa física (dados cliente físico); b. Ocorre a inserção desses dados, através da chamada ao método Inserir CliFis(), que está na classe Pessoa Física; 3. Se o Tipo Cliente = F = FALSO, desvia-se para a execução das mensagens que estão após a linha tracejada, na qual temos outra condição de guarda a ser avaliada; 4. Se Tipo Cliente = J (segunda condição de guarda) = VERDADE, executa-se as mensagens que estão associadas a essa condição, ou seja, as mensagens que estão após a linha tracejada; a. Ator informa os dados da pessoa jurídica (Dados Jur); b. Ocorre a inserção desses dados, através da chamada ao método Inserir CliJur(), que está na classe Pessoa Jurídica. Representando repetições no diagrama de sequência Além dos elementos já discutidos, o diagrama de sequência possibilita que especifiquemos , ou seja, repetições uma ou mais mensagens que são enviadas repetidas vezes. Veja um exemplo: Esse trecho de diagrama de sequência representa a repetição, na caixa LOOP, chamada de quadro de interação, com a condição de guarda [Para cada item de venda], ou seja, enquanto houver item na venda e o caixa (ator) digitar um cod produto, as mensagens e interações contidas na caixa LOOP serão executadas (ProcurarProd(), Inserir Novo Item() e Incluir Item() ). O retângulo que representa a repetição tem o rótulo “Loop”, indicando fragmento de repetição enquanto a condição de guarda for verdadeira. Observe que os métodos Inserir Novo Item() e Incluir Item() serão executadas se a condição [Se produto Exists) for verdadeira. E tal condição varia em função do resultado do método ProcurarProd(), contido na classe Produto. - -9 Criação e destruição de objetos O diagrama de sequência dispõe de , respectivamente, a duas notações extras para representar criação (<<Create>>) e a (<<Destroy>>) de . A seguir, veja exemplosdestruição objetos participantes da interação das duas notações: Uso da criação Na figura a seguir, vemos o (Objeto Criado). Depois de criado, quando recebe a uso da criação do participante mensagem <<CREATE>>, representado pelo método (CriaObjeto()), o Objeto Criado pode receber e enviar mensagens normalmente. - -10 Uso da destruição Na figura a seguir, temos o exemplo da , quando o objeto destruidor envia a mensagemdestruição de objetos <<destroy>>, representado pela execução do método DestroyMessage(). O elemento, representado pelo X, no objeto destruído representa o seu fim. Um objeto pode se autodestruir, o que é representado por um X ao final da linha de vida de um objeto (neste caso, é como se o objeto enviasse uma destruição a si próprio). Tipos de Mensagens: Síncronas e Assíncronas Os exemplos aplicados sobre o diagrama de sequência, até aqui, usaram apenas a , ou seja, aquela que uma vez enviada, (setamensagem síncrona aguarda o retorno pontilhada na direção contrária) (tal qual uma chama de rotina em um programa).com a sua conclusão O outro tipo é a , ou seja, a que uma vez enviada mensagem assíncrona não necessita esperar por uma resposta e pode continuar o fluxo do processamento. Exemplo Um bom exemplo de uso de mensagens assíncronas são os sistemas que necessitam de processamento e por isso devem permitir (mensagens queconcorrente representar mensagens concorrentes assíncronas são processadas em paralelo sem um tempo definido para a sua realização e sem esperar o retorno da mensagem para prosseguir). A figura a seguir mostra um exemplo de (seta vazia), representada pela chamada aomensagem assíncrona método Message1(), que sai do Objeto 1 para o Objeto 2. Mostramos logo a seguir a Message2(), síncrona (seta cheia), para que você perceba a diferença. - -11 Responsabilidade das Classes Quando definimos uma mensagem no modelo de interações, estamos atribuindo uma responsabilidade a uma classe. A modelagem de interações é um procedimento cuja finalidade é decompor as responsabilidades do sistema e alocá-las a classes. Exemplo Se partimos do princípio que um sistema terá N responsabilidades, podemos pensar em algumas soluções de divisões de responsabilidades entre as classes desse sistema. As soluções extremas seriam: uma classe contendo as N responsabilidades ou N classes contendo uma responsabilidade cada. Claro que essas duas soluções são inviáveis na prática, mas entre elas existem outras possibilidades. A tarefa de e existem várias formasidentificação de classes e atribuição de responsabilidades é complexa para realizá-la. A melhor solução dependerá, obviamente, da expertise do modelador e da correta aplicação de . A alguns princípios básicos de desenvolvimento de software coesão e o acoplamento são dois desses . Ela é uma medida que indica o princípios quão relacionadas (afins) são as responsabilidades de uma classe . Um indica uma ou seja, as responsabilidades de uma classe devem ser fortementebom projeto alta coesão, relacionadas entre si. Ao modelarmos classes, uma questão de relevância surge. Veja: Qual classe deve ser responsável por um determinado método? Ou seja, em qual classe devemos alocar esse método? Para tal decisão, devemos levar em consideração , volume, desempenho, segurança e outros aspectos físicos inerentes à implementação. Existe um conjunto de critérios que devem ser avaliados, e nosso foco aqui não é nos estendermos nesse assunto, mas alertar da preocupação. Apenas para citar, devemos alocar os métodos de forma que tenhamos um baixo acoplamento e alta coesão entre as classes. Classes de Interface e Controle No , devemos separar as classes em:conceito do desenvolvimento em camadas - -12 Responsabilidade das Classes Quando definimos uma mensagem no modelo de interações, estamos atribuindo uma responsabilidade a uma .classe A é um procedimento cuja finalidade émodelagem de interações decompor as responsabilidades do sistema e alocá-las a classes. Exemplo Se partimos do princípio que um sistema terá N responsabilidades, podemos pensar em algumas soluções de divisões de responsabilidades entre as classes desse sistema. As soluções extremas seriam: uma classe contendo as N responsabilidades ou N classes contendo uma responsabilidade cada. Claro que essas duas soluções são inviáveis na prática, mas entre elas existem outras possibilidades.A tarefa de é complexa e existem várias formasidentificação de classes e atribuição de responsabilidades para realizá-la. A melhor solução dependerá, obviamente, da expertise do modelador e da correta aplicação de . A são dois dessesalguns princípios básicos de desenvolvimento de software coesão e o acoplamento princípios. Ela é uma medida que indica o .quão relacionadas (afins) são as responsabilidades de uma classe Um indica uma , ou seja, as responsabilidades de uma classe devem ser fortementebom projeto alta coesão relacionadas entre si. Ao modelarmos classes, uma questão de relevância surge. Veja: Qual classe deve ser responsável por um determinado método? Ou seja, em qual classe devemos alocar esse método? - -13 Para tal decisão, devemos levar em consideração , volume, desempenho, segurança e outros aspectos físicos inerentes à implementação. Existe um conjunto de critérios que devem ser avaliados, e nosso foco aqui não é nos estendermos nesse assunto, mas alertar da preocupação. Apenas para citar, devemos alocar os métodos de forma que tenhamos um baixo acoplamento e alta coesão entre as classes. Classes de Interface e Controle No , devemos separar as classes em:conceito do desenvolvimento em camadas <interface> É a classe de interface, cujo estereótipo é << >>, que identifica uma classe queboundary serve de comunicação entre os atores e o sistema. <controle> É a classe de controle, com o estereótipo de << >>, que serve de intermediaçãoControl entre a classe de interface e as demais classes. Fica responsável por interpretar eventos ocorridos sobre os objetos <<boundary>> (eventos de mouse e teclado) e encaminhar a classe correta que precisa receber aquele evento. <entidade> São as classes de entidade, com o estereótipo << >>, que representam as classes doentity domínio do problema, que contém o conhecimento do negócio. Em geral, temos uma classe de interface por cenário de uso e uma classe de controle por caso de uso. Tipicamente a sequência entre as classes ocorre conforme o procedimento descrito na imagem a seguir: 1) O ator solicita a ação desejada, pela interface do cenário de uso; Fique ligado Existe um padrão chamado de “padrão especialista” (solução já dada, estudada e adaptada) que diz que o método deve ser colocado na classe que conhece a informação (tratada pelo método). Padrão é uma , já usada em projetos anteriores, que deve ser usada e ajuda a darsolução soluções em nossos projetos. Existem outros padrões, classificados em diferenteseficientes tipos a serem considerados, que podem ser objeto de uma pesquisa, para a expansão dos conhecimentos nesse sentido. Os diagramas de interação, em que o diagrama de sequência é um deles, ajudam a clarear essa questão, e muitas vezes perceberemos que fizemos uma escolha equivocada de classe, na qual inicialmente alocamos determinados métodos. - -14 2) A classe de interface encaminha o pedido a classe de controle; 3) A classe de controle traduz o pedido e solicita à respectiva entidade que execute determinada operação; 4) A sequência de retornos acontece, até que pela interface com o usuário tem a sua resposta. A seguir, você pode visualizar o , alterando apenas a forma de apresentar a diagrama equivalente classe de :entidade - -15 Quando tratamos do relacionamento entre as classes no diagrama de classes genérico, em que a classe de controle intermedia a comunicação entre as classes de interface e as classes de entidade, seguimos o seguinte modelo: O que vem na próxima aula •Os elementos e construção do diagrama de comunicação; •Estudo de caso, aplicando os conhecimentos adquiridos e construção de um diagrama de casos de uso, com as devidas especificações; •Modelagem de sistemas, conforme o modelo conceitual de classes e os diagramas de interação; •Refinamento do diagrama de classes com base nas interações. CONCLUSÃO Nesta aula, você: • Identificou a finalidade dos diagramas de interação e estabeleceu parâmetros de comparação dos dois diagramas de interação: sequência e comunicação; • Reconheceu quando usar o diagrama de sequência e o de comunicação; • Identificou os conceitos e elementos do diagrama de sequência; • Reconheceu que os diagramas de interação ajudam na identificação de novas classes e novos métodos Saiba mais Para saber mais sobre os tópicos estudados nesta aula, pesquise na internet sites, vídeos e artigos relacionados ao conteúdo visto. Se ainda tiver alguma dúvida, fale com seu professor online, utilizando os recursos disponíveis no ambiente de aprendizagem. • • • • - -16 • Identificou os conceitos e elementos do diagrama de sequência; • Reconheceu que os diagramas de interação ajudam na identificação de novas classes e novos métodos para as classes; • Avaliou como aplicar o conceito de camadas (interface, controle e entidade) no diagrama de sequência e no diagrama de classes; • Reconheceu como se deriva o diagrama de sequência com base no diagrama e especificações textuais dos casos de uso e diagrama de classes. Referências BOOCH, G.; JACOBSON, I.; RUMBAUGH, J. — Guia do Usuário. 2. ed. Rio de Janeiro: Elsevier, 2005. cap. 1 e 2.UML FOWLER, Martin. — um breve guia para a linguagem padrão. 3. ed. Porto Alegre: Artmed, 2005.UML essencial cap. 1 LARMAN, Craig. uma introdução à análise e ao projeto orientados a objetos e aoUtilizando UML e padrões? processo unificado. 3. ed. Porto Alegre: Artmed, 2007. cap. 2. • • • • Olá! Diagrama de Sequência Diagrama de Comunicação Diagrama de Sequência Diagrama de Comunicação O que vem na próxima aula CONCLUSÃO Referências
Compartilhar