Análise e Projeto de Sistemas Aula 10 Diagramas de Apoio UML – Diagramas de Interação O que é interação? “Interação é a ação que se exerce mutuamente entre duas ou mais coisas, duas ou mais pessoas.” Corresponde a um conjunto de mensagens trocadas entre objetos, com o objetivo de alcançar um determinado propósito, respeitando-se o contexto do sistema. UML – Diagramas de Interação Diagrama de Interação: Mostra as interações por meio de uma visão dinâmica do sistema. Pode representar um sistema , subsistema, operação, classe ou cenário de um caso uso (sendo esta última representação a mais frequente). UML – Diagramas de Interação Tipos de Diagramas de Interação: Veremos 2 tipos de diagramas de interação: Diagrama de Seqüência -> enfatiza a seqüência de mensagens dentro de uma linha de tempo; Diagrama de Comunicação (ou Colaboração) -> enfatiza o relacionamento estrutural entre os objetos, sem se preocupar com o tempo determinado para cada interação. UML – Diagramas de Interação Diagrama de Seqüência: Mostra a colaboração dinâmica entre os vários objetos de um sistema. A partir dele percebe-se a seqüência de mensagens enviadas entre os objetos. Mostra a interação entre os objetos, alguma coisa que acontecerá em um ponto específico da execução de um sistema. UML – Diagramas de Seqüência Representação: A representação gráfica de um diagrama de seqüência é baseada em duas dimensões. A primeira dimensão é vertical e representa as mensagens trocadas no decorrer de um tempo de vida (eixo Y). A segunda dimensão é horizontal e representa os objetos participantes das interações (eixo x). As mensagens correspondem a chamadas de serviços dos objetos, ou seja, a chamada de suas operações. UML – Diagramas de Seqüência Representações - Objetos: Os objetos em um diagrama de seqüência é feita com um retângulo alinhado no topo do diagrama, partindo dele uma linha vertical tracejada denominada linha de vida, que é desenhada até o fim do diagrama. A linha de vida representará a vida deste objeto dentro de um determinado período de tempo. livroA : Livro UML – Diagramas de Seqüência Representações – Objetos: Um objeto, que já existe quando a transação do diagrama tem inicio, é mostrado alinhado ao topo do diagrama, de forma a ficar acima da primeira seta de mensagem. Um objeto que continuará a existir, mesmo após a finalização da transação do diagrama, tem sua linha de vida estendida para além da última seta da mensagem. UML – Diagramas de Seqüência Representações - Objetos: : BaseDesenho : Retangulo desenhe (coordX , coordY) existe antes da transação iniciar continua existindo após o fim da transação UML – Diagramas de Seqüência Representações - Objetos: A criação ou destruição de um objeto dentro do período de tempo total representado pelo diagrama são mostrados desenhando-se o início ou fim da linha de vida do objeto no ponto determinado pela criação e destruição. UML – Diagramas de Seqüência Representações – Objetos (criação): A seta que representa a mensagem de criação é desenhada de forma a apontar sua cabeça para o símbolo do objeto. : Funcionario novo () : ContraCheque UML – Diagramas de Seqüência Representações – Objetos (destruição): A seta que carrega a mensagem de destruição é direcionada a um “X” colocado no fim da linha de vida. : Funcionario excluirbeneficio () : Beneficio UML – Diagramas de Seqüência Representações – Mensagens: As mensagens são enviadas de um objeto para outro, por meio de setas que partem de uma linha de vida para outra. São identificadas com o nome da operação que está sendo chamada. Podem carregar a solicitação de um processamento, a comunicação de um evento ou outras informações relevantes para o cumprimento de responsabilidades. UML – Diagramas de Seqüência Representações – Ativação: A mensagem da inicio à ativação, que corresponde ao período de tempo durante o qual um determinado método de um objeto esta sendo executado. A ativação é mostrada graficamente como um retângulo fino, branco ou cinza, que tem sua parte superior alinhada ao final da seta ativadora e se estende até o fim do processamento, que pode ter uma representação extra como uma mensagem de retorno (não é obrigatória). UML – Diagramas de Seqüência Representações – Ativação: : Curso : Aluno obterNome (matricula) Ativação mensagem mensagem de retorno UML – Diagramas de Seqüência Exemplo: : Computador : Servidor_de_impressao Imprimir (arquivo) : impressora : fila_impressão [Impressora livre] Imprimir (arquivo) [Impressora ocupada] Imprimir (arquivo) UML – Diagramas de Interação Tipos de Diagramas de Interação: Veremos 2 tipos de diagramas de interação: Diagrama de Seqüência -> enfatiza a seqüência de mensagens dentro de uma linha de tempo; Diagrama de Comunicação (ou Colaboração) -> enfatiza o relacionamento estrutural entre os objetos, sem se preocupar com o tempo determinado para cada interação. UML – Diagramas de Comunicação Chamado na UML 1.4 de diagrama de colaboração. Os objetos são distribuídos neste diagrama em ordem similar a do diagrama de seqüências, obedecendo à seqüência das mensagens. A colaboração entre objetos é representada por uma ligação simples acompanhada de uma numeração seqüencial e de outras informações como condições e iterações. UML – Diagramas de Comunicação Em virtude da forma como um diagrama de comunicação é apresentado, identificamos a seqüência temporal das mensagens por meio de seqüências numéricas. A autochamada do diagrama de comunicação e representado como um arco ligado ao objeto. UML – Diagramas de Comunicação 1 : obterGrade ( cursoX ) Coordenador 3 : *[Disciplina.temPreReq] obterPreRequisito (disc1) 2 : *[Para cada disciplina] obterInfDisciplina ( disc1 ) cursoX : curso 4 : obterTurmasAtivas (cursoX) turma1 : Turma disc1 : disciplina UML – Diagramas de Comunicação 1 : obterGrade ( cursoX ) Coordenador 3 : *[Disciplina.temPreReq] obterPreRequisito (disc1) 2 : *[Para cada disciplina] obterInfDisciplina ( disc1 ) cursoX : curso disc1 : disciplina 4 : obterTurmasAtivas (cursoX) turma1 : Turma A primeira mensagem é a chamada do método obterGrade( cursoX ) para o objeto cursoX. UML – Diagramas de Comunicação 1 : obterGrade ( cursoX ) Coordenador 3 : *[Disciplina.temPreReq] obterPreRequisito (disc1) 2 : *[Para cada disciplina] obterInfDisciplina ( disc1 ) cursoX : curso disc1 : disciplina 4 : obterTurmasAtivas (cursoX) turma1 : Turma O código deste método para ser concluído necessita de informações das disciplinas do referido curso e das turmas ativas. Então, para cada disciplina é chamado o método obterInfDisciplina( disc1 ) do objeto disc1. UML – Diagramas de Comunicação 1 : obterGrade ( cursoX ) Coordenador 3 : *[Disciplina.temPreReq] obterPreRequisito (disc1) 2 : *[Para cada disciplina] obterInfDisciplina ( disc1 ) cursoX : curso disc1 : disciplina 4 : obterTurmasAtivas (cursoX) turma1 : Turma O objeto disc1, por sua vez, necessita de informações dos pré-requisitos das disciplinas. Então, passa uma mensagem para si mesmo, chamando o método obterPreRequisito( disc1 ). UML – Diagramas de Comunicação 1 : obterGrade ( cursoX ) Coordenador 3 : *[Disciplina.temPreReq] obterPreRequisito (disc1) 2 : *[Para cada disciplina] obterInfDisciplina ( disc1 ) cursoX : curso disc1 : disciplina 4 : obterTurmasAtivas (cursoX) turma1 : Turma O objeto cursoX, depois de receber a resposta de sua mensagem nº 2, chama o método obterTurmasAtivas ( cursoX ) que pertence ao objeto turma1. UML – Diagramas de Comunicação A grande diferença entre o Diagrama de Comunicação e o de Seqüência é exatamente o que ocorre com o objeto do cursoX, isto é, não fica explicito no diagrama as mensagens de retorno e o momento em que isso ocorre. UML – Diagramas de máquina de Estado Descreve o comportamento de objetos como reação a eventos discretos (como por exemplo sinais e invocação de operações), por meio de seqüências de estados e ações que ocorrem durante a sua vida. Tipicamente este diagrama é usado para descrever a conduta de objetos, mas de acordo com a documentação da UML, também pode descrever a conduta de outras entidades tais como casos de uso , atores , subsistemas, operações ou métodos. UML – Diagramas de máquina de Estado Todo objeto possui uma vida, ou um ciclo de vida, que tem inicio quando ele é criado e finaliza quando ele é destruído. Durante esta vida ele passa por vários estados que, na maioria das vezes, deve obedecer a uma seqüência lógica e cronológica. O diagrama de máquina de estados nos auxilia a enxergar essa seqüência dentro do ciclo de vida. UML – Diagramas de máquina de Estado Estado: É uma condição ou situação existente na vida de um objeto durante a qual o estado satisfaz alguma condição, executa alguma atividade ou espera por algum evento. É representado graficamente por um retângulo com cantos arredondados. O nome do estado é colocado no centro do mesmo, caso ele não esteja subdivididos em compartimentos. UML – Diagramas de máquina de Estado Estado – Representação Gráfica: Aguardando Leitura do Cartão Um estado pode ser subdivididos em dois compartimentos separados por uma linha horizontal. Compartimento de nome; Compartimento de atividades internas. UML – Diagramas de máquina de Estado Estado – Representação Gráfica: Nome do estado Digitando senha entry / echoInvisivel(True) exit / echoInvisible(False) do / validaCaracter () Compartimento de Transições internas UML – Diagramas de máquina de Estado Compartimento de nome: Armazena o nome do estado, como uma string. Compartilhamento internas: de atividades Este compartimento armazena uma lista de ações ou atividades internas que são executadas enquanto o objeto se apresenta no estado em foco. UML – Diagramas de máquina de Estado Compartilhamento internas: de atividades Existem algumas palavras que representam as atividades internas: Entry: identifica uma ação que é executada na entrada do estado. Do: identifica uma atividade em andamento, ou seja, que é executada continuamente durante o tempo em que o objeto permanece neste estado. Exit: identifica uma ação que é executada na saída do estado. UML – Diagramas de máquina de Estado Estado Inicial: Aguardando Leitura do Cartão É um tipo de estado que indica o local de início na maquina de estados. È representado graficamente como um círculo preenchido. UML – Diagramas de máquina de Estado Estado Final: Atualizando Lançamentos É um tipo de estado que indica que a máquina de estados concluiu sua execução. É representado graficamente como um círculo envolvendo um pequeno círculo preenchido. UML – Diagramas de máquina de Estado Exemplo: Nascimento Bebê entry / reconhecerMae () do / desenvolverHabilidades () Primeiro Amadurecimento Criança entry / buscarParques () do / brincar () exit / abandonarBonecas () [se sexo = F] exit / abandonarCarrinhos () [se sexo = M] Puberdade Adolescente entry / estabelecerTerritorio () do / namorar () Adulto do / trabalhar () conhece a pessoa de sua vida Casado entry / casamento () do / planejarFilhos () viver a vida de casado até o fim UML – Diagramas de máquina de Estado Exemplo: Nascimento Bebê entry / reconhecerMae () do / desenvolverHabilidades () Primeiro Amadurecimento Criança entry / buscarParques () do / brincar () exit / abandonarBonecas () [se sexo = F] exit / abandonarCarrinhos () [se sexo = M] Puberdade UML – Diagramas de máquina de Estado Exemplo: Puberdade Adolescente entry / estabelecerTerritorio () do / namorar () Adulto do / trabalhar () conhece a pessoa de sua vida Casado entry / casamento () do / planejarFilhos () viver a vida de casado até o fim UML – Diagramas de Atividades Tem por propósito focalizar um fluxo de atividades que ocorrem internamente em um processamento, dentro de um período de tempo. Sua versão atual esta mais coerente com um diagrama de fluxo de dados ou de workflow. O diagrama de atividades completo é ligado a um classificador, como um caso de uso, um pacote ou a implementação de uma operação. UML – Diagramas de Atividades Ação (Action): É uma atividade básica existente para a especificação de um comportamento que venha a representar alguma transformação ou processamento na modelagem de um sistema. Preencher Nota UML – Diagramas de Atividades Fluxo de Controle (Control Flow): Mostra o fluxo que conecta as ações e atividades, ou seja, mostra a seqüência de execução. Representa a conclusão de uma atividade e inicialização da próxima. Corrigir Provas Fluxo de Controle Preencher Nota UML – Diagramas de Atividades Nó Inicial (Initial Node): Indica o nó que inicia um fluxo quando uma seqüência de atividades é invocada. Similar ao estado inicial do diagrama de máquinas de estado. UML – Diagramas de Atividades Atividade Final (Activity Final): Indica o nó que para todos os fluxos numa atividade. Similar ao estado final do diagrama de máquinas de estado. UML – Diagramas de Atividades Fluxo Final (Flow Final) : Indica o nó final que termina um fluxo. Utilizado para finalizar algum fluxo, mas não todos. UML – Diagramas de Atividades Nó de Decisão (Decision Node): Permite que, a partir de condições de guarda, sejam escolhidos entre mais de um fluxo de saída. Utilizado para simular a construção de um if-then-else. Uma decisão faz a separação de um fluxo de entrada de outros fluxos disjuntos. Cada um desses fluxos deve possuir uma condição de guarda que será avaliada. UML – Diagramas de Atividades Nó de Decisão (Decision Node): A partir destas avaliações, pelo menos um fluxo deve ser disparado ou o modelo estará mal formado. UML – Diagramas de Atividades Nó de Intercalação (Merge Node): A mesma representação gráfica da decisão é utilizada para marcar o fim de fluxos disparados por uma decisão. UML – Diagramas de Atividades Exemplo de um nó de Bifurcação e de Intercalação em uma parte de um diagrama de Atividades: Calcular custo total [ custo < 2500 ] Decisão [ custo >= 2500 ] Obter Autorização Emitir Carnê Intercalação UML – Diagramas de Atividades Nó de Bifurcação (Fork Node): A bifurcação separa um fluxo de entrada em vários fluxos concorrentes, sendo que todos eles são disparados ao mesmo tempo. A representação gráfica é feita através de uma linha grossa (no formato de uma barra). UML – Diagramas de Atividades Nó de União (Join Node): A união é um nó que sincroniza múltiplos fluxos concorrentes, ou seja, a união concatena fluxos de regiões concorrentes em um único fluxo simples. A representação gráfica é feita através de uma linha grossa (no formato de uma barra). UML – Diagramas de Atividades Exemplo de um nó de Bifurcação e União em uma parte de um diagrama de Atividades. Abrindo Arquivo Bifurcação Corregando texto Exibindo texto Liberando Edição de texto União UML – Diagramas de Atividades Raias (Swinlanes): Ações ou atividades podem ser organizadas dentro de raias, que são usadas para agrupar responsabilidades para ações ou atividades. Frequentemente correspondem a unidades organizacionais num modelo de negócio. Um diagrama de atividades pode ser dividido visualmente em raias, cada qual separada de suas raias vizinhas por linhas sólidas verticais de ambos os lados. UML – Diagramas de Atividades Raias (Swinlanes): A ordenação relativa das raias não tem significado semântico. Cada ação é representada por uma raia e os fluxos podem atravessar as zonas das raias. Exemplo de uma parte de um diagrama de Atividades com divisão de Raias. UML – Diagramas de Atividades Exemplo de uma parte de um diagrama de Atividades com divisão de Raias. Cliente Vendedor Solicitação de compra Efetuar Pagamento Lançar Venda Raias Liberar Mercadoria UML – Diagramas de Atividades Raias (Swinlanes): A UML 2.0 acrescenta uma segunda maneira de mostrar responsabilidades – são os nomes de divisão (partition names). Este caso é usado quando não é possível fazer o uso de raias. Na representação deve colocar o nome da parte responsável entre parênteses, dentro do retângulo da ação. (Cliente) Efetuar Pagamento UML – Diagramas de Atividades Exemplo: Preparando Liberação Produto Separando Produto em estoque Verificando programação do caminhão de entrega [ com atraso ] [ sem atraso ] Embalar Produto Emitindo liberação para entrega Emitir nota fiscal Remanejar entregas UML – Diagramas de Interação Geral / Visão Geral É uma variação do Diagrama de Atividade Seu objetivo é fornecer uma visão geral do controle de fluxo São utilizados quadros em vez de Nós de ação, embora símbolos como Nó de Decisão e Nó Inicial sejam também utilizados UML – Diagramas de Interação Geral / Visão Geral Existem basicamente dois tipos de quadros: Quadros de Interação: que contém qualquer tipo de diagrama de interação da UML Quadro de Ocorrências de Interação: que normalmente fazem uma referência a um diagrama de interação, mas não apresentam seu detalhamento UML – Diagramas de Interação Geral / Visão Geral Exemplo: ref. [ Registrado ] Realiza Login ref. Efetua Compra [ Não registrado ] Cadastrar Cliente Quadro de Ocorrência de Interação : Usuário Cliente obterNome (matricula) Quadro de Interação UML – Diagramas de Interação Geral / Visão Geral No exemplo de diagrama de Interação Geral estão descritos: Dois Quadros de Ocorrência de Interação, referentes ao processo de Login do Cliente e ao processo de Efetuar a Compra Um Quadro de Interação referente ao processo de Cadastrar Cliente UML – Diagramas de Implementação Diagramas de Implementação mostram aspectos de implementação física do sistema, incluindo a estrutura de componentes e a estrutura do sistema em tempo de execução (runtime) UML – Diagramas de Implementação São expressos de duas formas: Diagramas de Componentes Diagramas de Implantação UML – Diagramas de Componentes O Objetivo do Diagrama de Componentes , na versão 2.0 da UML, é mostrar as caixas pretas (que são os componentes) e especificar quais são suas interfaces, para que outros componentes possam acessar seus serviços sem que conheçam seus conteúdos Um componente representa uma parte modular de um sistema, que encapsula UML – Diagramas de Componentes Seu comportamento é definido em termos de prover e requerer interfaces Está amplamente associado à linguagem de programação que será utilizada para desenvolver o sistema modelado Pode ser utilizado para modelar o código-fonte, os módulos executáveis de um sistema, a estrutura física de um banco de dados ou mesmo os componentes necessários para a construção de interfaces UML – Diagramas de Componentes Determina como os componentes estarão estruturados e interagirão para que o sistema funcione de maneira adequada UML – Diagramas de Componentes Representação: Componente: representado como um retângulo, onde, dentro desta figura é colocado o estereótipo <<component>> e / ou é colocada uma figura no canto direito superior similar a representação antiga (um retângulo com duas tabs sobrepostas) UML – Diagramas de Componentes Exemplo de componente: representação <<component>> Gerenciador de Compras de UML – Diagramas de Componentes Representação: Associado ao componente são conectados ícones para representação de interfaces que são providas e/ou requeridas pelo componente Interfaces requeridas Interfaces providas UML – Diagramas de Componentes Exemplo: <<component>> <<component>> Gerenciador de Login Gerenciador de Compras <<component>> <<component>> Cadastro de Clientes Controlador de Estoque UML – Diagramas de Implantação O Diagrama de Implantação é o diagrama com a visão mais física da UML Este diagrama enfoca a questão da organização da arquitetura física sobre a qual o software ira ser implantado e executado em termos de hardware UML – Diagramas de Implantação Neste descrevemos as máquinas (computadores pessoais, servidores, etc) que suportarão o sistema e definimos como estas máquinas estarão conectadas e através de quais protocolos se comunicarão e transmitirão informações UML – Diagramas de Implantação Exemplo: <<device>> Hardware do Cliente << TCP / IP>> <<device>> << TCP / IP>> <<device>> Servidor de Firewall Servidor de Comunicação << TCP / IP >> <<device>> Servidor de Banco de Dados << TCP / IP>> <<device>> Servidor de Aplicação UML – Diagramas de Pacotes O Diagrama de Pacotes tem por objetivo representar os sub-sistemas ou sub-módulos englobados por um sistema de forma a determinar as partes que o compõe Demonstra como os elementos estão organizados nos pacotes e a dependências que existem entre os elementos e os próprios pacotes Pode ser utilizado de maneira independente ou associado a outros diagramas UML – Diagramas de Pacotes Exemplo de um pacote: Login UML – Diagramas de Tempo O Diagrama de Tempo apresenta algumas semelhanças com o Diagrama de Máquina de Estado, no entanto, ele enfoca as mudanças de estado de um objeto ao longo do tempo Este diagrama terá pouca utilidade para modelar aplicações comerciais, contudo poderá ser utilizado na modelagem de sistemas de tempo real ou sistemas que utilizem recursos multimídia / hipermídia, onde o tempo em que o UML – Diagramas de Tempo Exemplo: Neste exemplo descrevemos as etapas do objeto congresso. Cada etapa ou estado do objeto congresso é representado por meio de um hexágono, sendo que o primeiro e o último se encontram abertos. Acima de cada etapa entre barras verticais, se encontram as Restrições de Duração que determinam o tempo em que transcorrem as etapas