Prévia do material em texto
Práticas de Engenharia de Software Modelos (UML) - parte 2 1 IFPA Tecnologia em Análise e Desenvolvimento de Sistemas (TADS) PROFESSOR: Claudio Roberto de Lima Martins claudiomartins2000@gmail.com Agenda 2 ▶ Esta aborda alguns diagramas não vistos no Cap 4 do livro ESM. ▶ Diagrama de Casos de Uso 3 Diagrama de Casos de Uso ▶Um diagrama de casos de uso descreve a relação entre atores e casos de uso (funcionalidades) de um dado sistema. ▶Atores podem ser usuários de um sistema, bem como outros sistemas, equipamentos, e qualquer entidade que interage com o sistema e está modelado fora dos limites do sistema. ▶Este é um diagrama que permite dar uma visão de alto nível do sistema, sendo fundamental a definição correta da sua fronteira. ▶O diagrama complementa a narrativa da documentação dos casos de uso (como vistos nas aulas anteriores). 4 Diagrama de Casos de Uso ▶Representação básica ▶O ator é uma classe esterotipada por um boneco (stick man) 5 Linha representando a interação (associação) entre o ator e o caso de uso Diagrama de Casos de Uso ▶Representação básica e elementos ▶ Atores ▶ Caso de Uso ▶ Associação ▶ Sistema 6 Representação do Ator do Sistema ▶Um ator também pode ser mostrado como uma classe com a palavra-chave de estereótipo «ator». 7 Ator Customer (”cliente”) como Classe Customer https://www.uml-diagrams.org/class.html Generalização entre atores ▶A generalização entre atores é usada como o mesmo sentido/objetivo que o usado para generalização entre classes. 8 No exemplo, o ator “Web Client” é uma superclasse abstrata para Administrador, Editor e Cliente. Limites no Diagrama de Casos de Uso ▶Representação de limites do sistema em forma de caixa para delimitar o escopo do sistema. ▶Os limites podem servir também para organizar o sistema por assuntos (módulos). 9 Limites estereotipados no Diagrama de Casos de Uso ▶Exemplo do uso de estereótipos para um “assunto” (módulo independente): Assunto do serviço meteorológico estereotipado como «Serviço» 10 Os estereótipos UML para o assunto são: •"Subsistema" •"Processador" •"Serviço" •"Componente" Caso de uso ▶Cada caso de uso deve ter um nome. ▶O caso de uso é mostrado como uma elipse contendo o nome do caso de uso. 11 Caso de uso de registro do usuário . Caso de uso de transferência de fundos Generalização entre casos de uso ▶A generalização entre os casos de uso é semelhante à generalização entre as classes (caso de uso “filho” herda as propriedades e o comportamento do caso de uso “pai” e pode substituir o comportamento do pai. 12 O caso de uso “Autenticação de Usuário da Web” é um caso de uso abstrato especializado em casos de uso ”Login”, “Lembrar- me” e “Logon Único”. https://www.uml-diagrams.org/use-case.html#generalization https://www.uml-diagrams.org/generalization.html https://www.uml-diagrams.org/use-case.html#abstract-use-case https://www.uml-diagrams.org/use-case.html#abstract-use-case Relacionamento de “extensão” (extend) entre casos de uso ▶“Extend” é um relacionamento direcionado que especifica como e quando o comportamento definido no caso de uso de extensão suplementa (estende) o comportamento definido no caso de uso estendido (o caso de uso base/principal). ▶O caso de uso estendido é independente do caso de uso estendido. ▶A extensão do caso de uso normalmente define um comportamento ”opcional” ▶Significa que a chamada ao caso de uso estendido não é necessariamente obrigatório de ocorrer no fluxo alternativo do caso de uso principal. 13 https://www.uml-diagrams.org/uml-core.html#directed-relationship Relacionamento de “extensão” (extend) entre casos de uso ▶O relacionamento estendido entre os casos de uso é mostrado por uma seta tracejada com uma ponta de seta aberta do caso de uso estendido para o caso de uso estendido (base). A seta é rotulada com a palavra-chave «extend» 14 Ex: O caso de uso de registro é completo e significativo por si só. Ele poderia ser estendido com o caso de uso opcional Get Help On Registration (Ajuda ao Registro). Relacionamento de “include” entre Casos de uso ▶Um relacionamento de inclusão (“include”) é um relacionamento direto entre dois casos de uso, que ocorre de forma obrigatória (não é opcional). ▶O “include” representa um comportamento que ocorre quando um caso de uso incluído é inserido no comportamento do caso de uso de inclusão (o principal/base). ▶O relacionamento de inclusão é análogo a uma chamada de sub-rotina ou macro e pode ser usado: ▶quando há partes comuns do comportamento de dois ou mais casos de uso, ▶para simplificar grandes casos de uso, dividindo-os em vários casos de uso. 15 https://www.uml-diagrams.org/uml-core.html#directed-relationship https://www.uml-diagrams.org/use-case.html Relacionamento de “include” entre Casos de uso ▶Um relacionamento de inclusão entre os casos de uso é mostrado por uma seta tracejada com uma ponta de seta aberta do caso de uso base para o caso de uso incluído. A seta é rotulada com a palavra- chave «include» 16 EX: Os casos de uso Depositar Fundos e Retirar Dinheiro incluem o caso de uso Autenticação do Cliente . Relacionamento de “include” entre Casos de uso ▶Os casos de uso grandes e complexos podem ser simplificados dividindo- os em vários casos de uso, cada um descrevendo alguma unidade lógica de comportamento. Observe que a inclusão de casos de uso se torna incompleta por si só e exige que os casos de uso incluídos sejam completos. 17 EX: O caso de uso de “Checkout” inclui vários casos de uso – “Pesquisar Item”, “Calcular Total e Taxas” e “Pagamento”. Resumo – Diagrama de Casos de Uso 18 Exercício resolvido (1) ▶Descreva as funcionalidade de um editor de texto simplificado (ex: Bloco de Notas). Em seguida, elabore um diagrama de casos de uso para as funcionalidade identificadas. Dica: concentre-se nas principais funções do editor, aquelas nas quais o usuário utiliza na confecção do texto. 19 Exercício ▶Descreva as funcionalidade de um editor de texto simplificado (ex: Bloco de Notas) ▶RESP: ▶Um editor de texto simplificado manipula o texto (seus dados/objetos) em um editor orientado a linhas. O texto é armazenado em arquivos que consistem em sequências de linhas, onde cada linha é uma sequência de caracteres. ▶O editor oferece ao usuário funções básicas de edição usando o teclado, como quebra de linha (tecla ENTER), inserção de uma linha adicional, apagar o texto, selecionar texto, copiar texto, etc. Há operações extras que permitem formatar a fonte, pesquisar um texto, trocar um texto por outro, etc. ▶Uma vez editado um texto, o editor permite operações típicas para criar um novo texto, salvar, imprimir e ler arquivos de textos salvos. 20 Exercício ▶Diagrama de casos de uso para as funcionalidade identificadas. RESP: Para simplificar o levantamento (preliminar), as funções para editar um texto (inserir linha, apagar, etc) ficam agrupadas em um único caso de uso (um grande caso de uso). 21 Exercício resolvido (2) ▶Elabore um Diagrama de Casos de Uso para o seguinte cenário: ▶Um Vendedor tira um pedido para um cliente e ao tirar o pedido, ele pode ou não, dependendo do valor do pedido ou forma de pagamento, consultar o SPC. Ao tirar o pedido, será feita a verificação de pagamentos em atrasos do cliente. ▶Ao ator Entregador é delegada a funcionalidade de entrega do pedido, mas também será feito a verificação de pagamentos em atrasos, reutilizando a especificação dessa funcionalidade. OBS: identifique os casos de uso principais e os casos de uso de inclusão e extensão. 22 Exercício resolvido (2) ▶Solução 23 Diagrama de Comunicação (antigo Diagramas de colaboração na UML 1.x) 24 Diagrama de Comunicação ▶O diagrama de comunicação é um tipo de diagrama de interação UML que mostra as interações entre objetos na linha do tempo, usando mensagenssequenciadas em um arranjo de forma livre. ▶O diagrama de comunicação corresponde e pode ser convertido a um diagrama de sequência (vice-versa). ▶Nos diagramas de comunicação: ▶Os objetos são mostrados com conectores de associação entre eles. ▶As mensagens são incluídas nas associações e são mostradas como setas curtas apontando na direção do fluxo de mensagens. ▶A seqüência de mensagens é mostrada por meio de um esquema de numeração 25 https://www.uml-diagrams.org/uml-25-diagrams.html#interaction-diagram https://www.uml-diagrams.org/sequence-diagrams.html Diagrama de Comunicação – Exemplo ▶Os dois diagramas a seguir mostram um diagrama de comunicação e o diagrama de seqüência que mostra as mesmas informações. ▶A criação do diagrama de sequência a partir do diagrama de comunicação é possível, seguindo a sequência das mensagens a partir do esquema de numeração. ▶O objetivo principal de um diagrama de comunicação é mostrar claramente o conjunto completo de mensagens transmitidas entre objetos (troca de mensagens). 26 Diagrama de Comunicação – Exemplo ▶Exemplo de um cenário principal (fluxo normal) para o caso de uso “Criar Contato”. 27 Diagrama de Comunicação – Exemplo (correspondência ao Diagrama de Sequência) 28 Exercício: Diagrama de Sequência em Comunicação ▶Para o diagrama de sequência (caso de uso “Processamento de pedidos”), crie o diagram de colaboração correspondente. OBS: A mensagem “Enviar()” é do tipo assíncrona. : Comprador SOLUÇÃO 30 Diagrama de Transição de Estados (ou Diagrama de Máquina de Estados) 31 Diagrama de Transição de Estados ▶Um diagrama de máquina de estado (ou Diagrama de Máquina de Estados) modela o comportamento de um único objeto, especificando a sequência de eventos pelos quais um objeto passa durante sua vida útil em resposta a eventos. ▶Com isso, o objeto pode passar de um estado inicial para um estado final através de uma transição. 32 Exemplos didáticos ▶Como exemplo, o diagrama da máquina de estados a seguir mostra os estados pelos quais uma porta passa durante sua vida útil. 33 A porta pode estar em um de três estados: "Aberta", "Fechada" ou "Trancada". Pode responder aos eventos Abrir (open), Fechar (close), Bloquear (lock) e Desbloquear (unlock). Observe que nem todos os eventos são válidos em todos os estados; por exemplo, se uma porta for aberta, você não poderá trancá-la até fechá- la. Observe também que uma transição de estado pode ter uma condição de guarda anexada: se a porta estiver aberta, ela só pode responder ao evento Close (Fechar) se a condição doorWay-> isEmpty for atendida. Estado ▶Um estado é uma restrição ou situação no ciclo de vida de um objeto, em que uma restrição se mantém (durante um tempo), o objeto executa uma atividade ou espera por um evento. ▶Um estado é denotado por um retângulo arredondado com o nome do estado escrito dentro dele. 34 Diagrama de transição de estados das estações do ano (ciclo fechado) Primavera Verão Outono Inverno Estados iniciais e finais ▶O estado inicial é denotado por um círculo preto preenchido e pode ser rotulado com um nome (ou não). Pode representar um “pseudo” estado que inicia o processo do ciclo de vida dos estados do objeto. ▶O estado final é denotado por um círculo com um ponto dentro e também pode ser rotulado com um nome. 35 Transição ▶As linhas de transição representam o movimento de um estado para outro. Cada linha de transição é rotulada com o evento que causa a transição. ▶Ver um sistema como um conjunto de estados e transições entre estados é muito útil para descrever comportamentos complexos. ▶Uma transição pode ter um gatilho, uma condição (guarda) e um efeito. 36 "Trigger" é a causa da transição, que pode ser um sinal, um evento, uma mudança em alguma condição ou a passagem do tempo. "Guarda" é uma condição que deve ser verdadeira para que o gatilho cause a transição. "Efeito" é uma ação (método) que será chamada diretamente no objeto que possui a máquina de estado como resultado da transição. Ações do Estado ▶Em um exemplo no qual uma transição gera um efeito, pode-se denotar uma ação. ▶Ação é uma computação atômica executável, que inclui chamadas de operação (um método), a criação ou destruição de outro objeto ou o envio de um sinal para um objeto. Uma ação está associada a transições e durante as quais uma ação não é interrompível - por exemplo, entrada, saída. ▶O diagrama abaixo mostra um estado com uma ação de entrada (“pickup”) e uma ação de saída (“disconnect”), em duas formas de representação. 37 Autotransições ▶Um estado pode ter uma transição que retorna a si mesmo. ▶Isso é mais útil quando um efeito está associado à transição. 38 Nível de detalhamento do Diagrama de Estado ▶Um diagrama de estado pode ser mostrado em diversos níveis de detalhamento (abstração). ▶Ex: Máquina de estado comportamental de alto nível para caixa eletrônico de banco (um sistema) 39 Diagrama de Estados e “sub-estados” ▶Exemplo: Operação do forno de micro-ondas. O estado “Operação” é detalhado (explodido) para deixar mais claro o seu funcionamento. Resumo – Diagrama de Máquina de Estado 41 Diagrama de Componentes 42 Diagrama de Componentes ▶Um diagrama de componentes ilustra os componentes de software (as “peças de software”), controladores, bibliotecas, etc., que irão compor um sistema. ▶Um diagrama de componente tem um nível mais alto de abstração do que um diagrama de classe ▶geralmente um componente é implementado por uma ou mais classes (ou objetos) em tempo de execução. ▶“Componentes” são blocos de construção, com certa independência(*), em diversos níveis de granularidade (tamanho) de um software. ▶ (*) Independência no sentido que podem ser substituídos sem comprometer o funcionamento do sistema. ▶Componente pode abranger um módulo ou grande parte de um sistema, sempre observando componente como um “bloco” físico, executável (já compilado, binário, ou executável). Ex: uma página web, uma biblioteca “.jar”, uma API, um arquivo executável (.exe), um script (.bat ou shell), etc. 43 Elementos do Diagrama de Componentes ▶Componente ▶Os componentes são representados como um classificador retangular com a palavra-chave «componente»; opcionalmente, o componente pode ser exibido como um retângulo com um ícone de componente no canto superior direito. ▶Conector de montagem ▶O conector de montagem conecta a interface necessária de um componente (Componente1) com a interface fornecida de outro componente (Componente2); isso permite que um componente forneça os serviços que outro componente requer. 44 Elementos do Diagrama de Componentes ▶Portas ▶ O uso de portas no componente permite que um serviço ou comportamento seja especificado para fora de seu ambiente (fornecer serviços externos), bem como especifica parâmetros de entrada para que o serviço possa funcionar. ▶As portas podem especificar entradas e saídas, pois podem operar de forma bidirecional. ▶EX: O diagrama detalha um componente com uma porta para serviços online junto com duas interfaces fornecidas para entrada e rastreamento de pedidos, bem como um pagamento de interface necessário.45 Exemplo de Diagrama de Componentes ▶O diagrama exemplificado demonstra alguns componentes e seus inter-relacionamentos. 46 • Os conectores "ligam" as interfaces fornecidas por "Produto" e “Customer“ (Cliente) às interfaces necessárias especificadas por “Order“ (Pedido). • Um relacionamento de dependência mapeia os detalhes da conta associada (Account) de um cliente para a interface necessária; " Payment“ (Pagamento), indicado por “Order“ (Pedido). Resumo – Diagrama de Componentes ▶Os principais elementos do diagrama de componentes UML: componente, interface fornecida, interface necessária, porta, conectores. 47 Diagrama de Implantação (Deployment) 48 Diagramas deimplantação ▶Um diagrama de implantação modela a arquitetura do software em tempo de execução (em funcionamento ou implantado em um ambiente de operação). ▶Ele mostra a configuração dos elementos de hardware (nós) e mostra como os elementos e artefatos de software são mapeados nesses nós. ▶Elementos básicos: ▶Nó e Instância de Nó ▶Artefato ▶Associação ▶Nó Conteiner 49 O diagrama de implantação pode ser adaptado para representar a arquitetura de rede de um sistema. Veja mais em https://www.uml-diagrams.org/network-architecture-diagrams.html https://www.uml-diagrams.org/network-architecture-diagrams.html Diagrama de Implantação – Nó ▶Nó define uma classe (genérica) de um hardware. Ex: Servidor, Computador, etc ▶Uma Instância de Nó exemplifica (instancia) um nó em termos de equipamento (tipo, marca, etc). Ex: HP-Pavillion é uma instância de um nó Computador. 50 Diagrama de Implantação – Nó estereotipado ▶Estereótipos de nós: alguns nós podem ser identificados por estereótipos, por exemplo: «database-server», «mobile-device», «computador», «array-disco», «pc», «cliente-pc», «smartphone», «SSL- server», «servidor-web»,«Storage»,«servidor-unix »,«notebook», etc. ▶Pode ser representado pelo nome ou por um ícone apropriado no canto superior direito do símbolo do nó 51 Diagrama de Implantação – Artefato ▶Um artefato é um produto do processo de desenvolvimento de software . Isso pode incluir modelos de processo (por exemplo, modelos de caso de uso, modelos de design, etc.), arquivos de código-fonte, executáveis, documentos de design, relatórios de teste, protótipos, manuais do usuário, etc. ▶Um artefato é denotado por um retângulo mostrando o nome do artefato, a palavra-chave «artefato» e um ícone de documento, conforme mostrado abaixo. ▶Um artefato representa (na prática) um componente de software (em “manifesto”). 52 https://sparxsystems.com/platforms/software_development.html Diagrama de Implantação - Manifestação de componentes por artefatos 53 Diagrama de Implantação – Associação ▶Uma associação representa um “link” de comunicação entre os nós. 54 O diagrama a seguir mostra um diagrama de implantação para uma rede, representando protocolos de rede como estereótipos e multiplicidades nas extremidades da associação. Diagrama de Implantação – Nó como contêiner ▶Um nó pode conter outros elementos, como componentes ou artefatos. 55 O diagrama a seguir mostra um diagrama de implantação para parte de um sistema embarcado, representando um artefato executável contido no nó da placa-mãe. Exemplo de Diagrama de Implantação ▶Diagrama de implantação em nível de especificação: Aplicativo da web implantado no servidor Tomcat JSP e esquemas de banco de dados - para o sistema de banco de dados. 56 Exercícios 57 Q01 ▶Represente em forma de classe (apenas uma classe e seus atributos) as abstrações para o problemas a seguir. A) Uma multa de trânsito capturada por um radar eletrônico, que será aplicada ao motorista e seu veículo. B) Um bilhete de estacionamento, que é gerado em máquinas automatizadas (presentes em um shopping-center, por exemplo). O bilhete é retirado pelo motorista, e no final do passeio/compras ele se dirige ao guichê para pagar. 58 Q02 ▶ Identifique os atributos para as classes abaixo, considerando o essencial para o contexto do problema: a) Aluno (de uma universidade que frequenta um curso em um semestre) b) Livro (em um sistema de biblioteca acadêmica) c) Veículo (carro de passeio para uma locadora de automóveis) 59 Q03 ▶Identifique as classes com seus atributos e relacionamentos (associações) para o contexto a seguir: ▶Uma turma de um curso de graduação tem disciplinas ministradas em salas diferentes. Uma turma possui uma identificação, turno, série e datas de início e término para matricula. Uma sala é identificada por um número, contém uma quantidade de lugares e está localizada em um prédio. Um curso tem um nome e um número de alunos matriculados, além de um período em semestres para sua conclusão. Uma disciplina tem um nome e um código, pertence a um curso e possui carga horária, ementa e conteúdo programático. 60 Q04 ▶Considere a atividade que você fez sobre o sistema de Clínica Médica. ▶Descrição (Produto para gestão de clínica) ▶O produto deve dar suporte à gestão de uma clínica médica, onde trabalha uma equipe de médicos e enfermeiros. O software será usado pelos recepcionistas para marcação de consultas, assim como aos médicos para registro do prontuário e evolução (histórico) dos pacientes. Os enfermeiros atuam nas funções de atendimento ambulatorial ao paciente, registrando procedimentos ambulatoriais (avaliação clínica, aplicação de medicamentos, medição, coleta, curativos, etc). O software deve permitir a recepção de resultados de exames, enviados diretamente dos laboratórios conveniados aos médicos, que os solicitaram para os pacientes. Por opção do médico, estes resultados podem ser entregues aos pacientes, ou guardados na clínica para consulta posterior. ▶Elabore um diagrama de classes para a definição do sistema. Considere apenas as classes de negócio, sem métodos (apenas atributos essenciais e relacionamentos). 61 Q05 – Diagrama de Comunicação 62 ▶Considerando o diagrama de comunicação a seguir, quais classes implementam os métodos m1(), m2(c), m3() e m4() ? :A m1() m2() m3() m4() :A m1() m2() m3() m4() a) A: b) X: c) Y: d) Z: Obs: essa notação representa uma coleção de objetos Q6 – UML 63 ▶Identifique os elementos do diagrama abaixo. ▶Qual o nome desse diagrama? a) ____ c) ____ b) ____ E1 ____ E2 ____ d) ____ Q7 – Identificação de classes/objetos 64 ▶Identifique classes e/ou relacionamentos a partir das seguintes regras do negócio: A) Pedidos são compostos de vários itens de pedido. B) Um item de pedido diz respeito a um e exatamente um produto. C) Um pedido pode conter até 20 itens. Q8 – Diagrama de Casos de Uso 65 ▶Considere um sistema para um terminal de auto-atendimento de um banco. Um cliente do banco ao utilizar o terminal de auto- atendimento pode realizar as seguintes transações: Obter o extrato da sua conta bancária, podendo escolher a opção de imprimir ou visualizar em tela. Realizar saque da conta. Realizar transferência de valores entre a sua conta e outra conta. Em todas as transações é necessário fornecer a identificação da conta e do acesso do cliente (através de uma senha e passando o cartão no terminal). ▶Desenhe o diagrama de casos de uso, considerando os possíveis relacionamentos de include (incluir) e extend (estender). Q9 – Diagrama de Sequência 66 ▶Faça o Diagrama de Sequência a partir da regra de um jogo de dados, descrito abaixo e do modelo conceitual presente na figura a seguir. Jogo de Dados: no jogo de dados, um jogador lança dois dados; se a soma dos valores das face for 7, ele ganha; caso contrário, ele perde. Q10 – Diagrama de Estados 67 ▶Elabore um Diagrama de Transição de Estados para um semáforo (sinal de trânsito). LISTA DE EXERCICIOS DO CAP 4 (Livro Engenharia de Software na Prática) 68 ▶Solucione as questões do Cap 4 do livro: https://engsoftmoderna.info/cap4.html https://engsoftmoderna.info/cap4.html