UML- Unified Modeling Language Técnicas UML Profa. Dra. Rosângela Penteado 1 INTRODUÇÃO ENFOQUES PRINCÍPIOS OO METODOLOGIAS OO UML ROSE ESTUDOS DE CASOS Sistemas 2 UML BOOCH OMT UML Diagrama de Estados Diagrama de Objetos (Colaboração) Diagrama de Processo (Desenvolvimento) Diagrama de Módulos (Componentes) Diagrama de Estados Diagrama de Classes OOSE Use Case Subsistemas (Package) Diagrama de Interações MiniEspecificação 3 Usos de UML • UML é uma linguagem de modelagem para: Visualização, Especificação, Construção, Documentação e Comunicação de artefatos que façam uso de sistemas complexos de software. • Adequada para modelar sistemas de informação corporativos a serem distribuídos a aplicações baseadas em WEB e até sistemas complexos de tempo real. 4 Modelo Conceitual da UML Para formar um modelo conceitual da linguagem é necessário aprender três elementos principais • Blocos de construção • Regras que determinam como esses blocos poderão ser combinados • Mecanismos comuns aplicados na UML 5 Blocos de Construção • É composto de Itens, Relacionamentos e Diagramas. • Os itens são abstrações, os relacionamentos reunem esses itens; os diagramas agrupam coleções interessantes de item. • Itens são de 4 tipos: • Estruturais: parte mais estática do modelo (substantivos) • Comportamentais: parte dinâmica (verbos) • de Agrupamento – Pacotes - partes organizacionais dos modelos da UML. • de Anotação – Nota - partes explicativas dos modelos da UML, comentários. 6 Itens Estruturais • São as partes estáticas de um modelo representando elementos que são conceituais ou físicos • Exemplos Cadeia de Classe responsabilidade Interface Use Cases físicos Servidor Nó Componente 7 Itens Comportamentais • São partes dinâmicas dos modelos da UML. São os verbos de um modelo representando comportamento no tempo e no espaço. • Tipos: - Interação - especifica um conjunto de mensagens trocadas entre objetos - Máquina de Estado - especifica seqüências de estados de um objeto 8 Itens de Agrupamento • São as partes organizacionais dos modelos de UML. São blocos em que os modelos podem ser decompostos – Pacotes. • Pacote – mecanismo de propósito geral para a organização de elementos de grupo. Os itens estruturais, comportamentais e até outros itens de grupos podem ser colocados em pacotes. É puramente conceitual. • Ex: agrupamento básico, frameworks, modelos e subsistemas. 9 Itens de Anotação • Partes explicativas dos modelos de UML. São comentários, incluídos para descrever, esclarecer e fazer alguma observação sobre qualquer elemento do modelo. 10 Relacionamentos • Existem 4 tipos de relacionamentos na UML: – Dependência: alteração de item pode afetar a semântica de outro. – Associação: ligações existentes entre os objetos – Generalização: os objetos dos elementos especializados (os filhos) são substituíveis por objetos do elemento generalizado (pai) – Realização: relacionamento semântico entre classificadores, em que um classificador especifica um contrato que outro classificador garante executar. 11 Diagramas • Diagrama é a apresentação gráfica de um conjunto de elementos para permitir a visualização de um sistema sob diferentes perspectivas. – – – – – – – – – Diagrama de classes Diagrama de objetos Diagrama de casos de uso Diagrama de seqüências Diagrama de colaborações Diagrama de gráficos de estados Diagrama de atividades Diagrama de componentes Diagrama de implantação 12 Modelagem da arquitetura do sistema Vocabulário Classes, interfaces Funcionalidade e colaborações Visão da Implementação Visão de Projeto Comportamento Gerenciamento da configuração Montagem do sistema Visão de caso de uso Visão de Processo Desempenho Threads e processos que Escalabilidade formam os mecanismos de concorrência e de Throughput sincronização Visão da Implantação Topologia do sistema Distribuição Fornecimento Instalação 13 Processo de Desenvolvimento de Software fases/tempo dimensão/componente Concepção Elaboração Construção Transição Análise de Requisitos Nível de arquitetura Design Nível de classe Implementação Teste iterações #1 #2 #3 #n #m+1 14 Processo de Desenvolvimento de Software fases/tempo Fluxo de trabalho do Processo Concepção Elaboração Construção Transição Análise de Requisitos Nível de arquitetura Design Nível de classe Implementação É a primeira fase do processo, em que a idéia inicial para o desenvolvimento é levada até o ponto de ser - pelo menos internamente - suficientemente bem fundamentada para assegurar a passagem à fase de elaboração Teste 15 Processo de Desenvolvimento de Software fases/tempo Fluxo de trabalho do Processo Análise de Requisitos Nível de arquitetura Design Nível de classe Implementação Teste Concepção Elaboração Construção Transição É a segunda fase do processo, quando a visão do produto e sua arquitetura são definidas. Os requisitos do sistema podem abranger desde declarações de caráter geral até critérios precisos de avaliação, em que cada requisito especifica determinado comportamento funcional ou não funcional e proporciona a base para a 16 realização de testes Processo de Desenvolvimento de Software fases/tempo Fluxo de trabalho do Processo Análise de Requisitos Nível de arquitetura Design Nível de classe Implementação Teste Concepção Elaboração 3ª fase do processo, em que o software chega a uma arquitetura baseline executável e destinada à transferência para a comunidade de usuários. Os requisitos do sistema e seus critérios de avaliação são sempre reexaminados com base nas necessidades comerciais do projeto e alocação de recursos. Construção Transição 17 Processo de Desenvolvimento de Software fases/tempo dimensão/componente Análise de Requisitos Nível de arquitetura Design Nível de classe Concepção Elaboração Construção Transição 4ª fase do processo, em que o software chega às mãos dos usuários. Raramente o processo termina aqui, pois é quando o sistema é aprimorado continuamente, bugs são eliminados e acrescentadas novas características. Implementação Teste 18 Visões da Ferramenta ROSE • Use Case View - descreve o sistema como um conjunto de transações do ponto de vista dos atores externos. (criada na fase de concepção do ciclo de vida e direciona o resto do projeto) • Logical View - contém a coleção de packages, classes e relacionamentos. (fase de elaboração e refinada na construção) 19 Visões da Ferramenta ROSE • Component View: contém módulos e subsistemas (fase de elaboração e refinada na de construção) • Deployment View: contém a parte física do sistema e a conexão entre essas partes (elaboração do processo - implementação) 20 Diagramas existentes nas Visões Use Case View Diagrama de Descrição do Diagrama de Diagrama de Use Case Use Case Seqüência Colaboração Logical View Diagrama de Classes Diagrama de Estados Component View Diagrama de Componentes Deployment View Diagrama Deployment 21 Diagramas USE CASES • Importantes na organização e modelagem dos comportamentos de um sistema • Use Case é a especificação de seqüências de ações que um sistema, subsistema ou classe pode realizar, interagindo com um dos agentes. • Documentam os requisitos dos sistemas - Delimitam o sistema - Definem a funcionalidade do sistema • Podem incluir seqüências alternativas ou excepcionais (de erros). 22 Use Case: Representação Gráfica • A coleção de use cases deverá especificar todas as formas existentes de uso do sistema • A descrição do sistema é feita por meio de vários use cases que são executados pelo atores (um ou mais) • Atores = entidades do ambiente do sistema, pessoas ou outros subsistemas que interagem com o sistema em desenvolvimento 23 UML - Diagrama de Use Cases Sendo composto por: Ator Use Case CadastrarCliente Cliente Relacionamento de Associação dadosCliente msg02 Cliente cadastrarCliente 24 Exemplo de Use Case dados do cliente Cadastrar Cliente AtorCliente mensagem de cadastro 25 Descrição do Use Case • Curso Normal: • 1 - Cliente informa que deseja fazer seu cadastro • 2 - CPF do cliente é solicitado • 3 - Cliente informa o CPF • 4 - Não existe o cliente associado ao CPF • 5 - Cliente informa seu Nome, Endereço e Telefone • 6- Uma instância de cliente é criada • 7. MensagemCadastro “Cliente Cadastrado” 26 Descrição do Use Case Curso Alternativo: 4 - Existe o cliente associado ao CPF 4.1 - Exibir o cliente associado ao CPF 4.2 –MensagemCadastro “cliente já está cadastrado” 4.6 - Abandonar Use Case 27 UML - Diagrama de Use Cases Generalização <<uses>> Generalização <<extends>> dadosPedido dadosPedido Cliente msg02 RealizarPedido <<uses>> RealizarPedido Cliente msg02 <<extends>> ValidarCliente CadastrarCliente 28 Diagrama de Use Case -Exemplo Sistema de Validação de Cartão de Crédito RealizaTransacaoCartao InstituicaoVarejo AtorCliente ProcessaContaCliente AtorClienteFisico AtorClienteJuridico RecuperaTransacoes Inst.Financeira GerenciaContaCliente 29 Use Case – Reserva de Tipo de Acomodação em Hotel InfReserva Funcionario ReservarAcomodacao msg 30 Descrição do Use Case Curso Normal 1.Obter informações do cliente sobre reserva. 2. Tipo de acomodação desejada está disponivel. 3. Obter informações de nro de dependentes. 4. Efetuar reserva desejada. 5. Emitir msg "Reserva Feita" e enviar comprovante para hospede com essas informações. 6. Fim do use-case. Curso Alternativo 2. Não ha disponibilidade do tipo de acomodação desejada. 2.1. Emitir msg "não há disponibilidade do tipo de acomodação desejada". 2.2. Abandonar use case. 31 UML - Diagramas de Classes • Classe é uma descrição de um conjunto de objetos com os mesmos atributos, relacionamentos, operações e semântica. • Classes = abstrações do domínio do problema: “Cliente”, “Banco”, “Conta” • Toda classe deve ter um nome que a distinga das outras classes, que pode ser simples ou precedido pelo nome do pacote em que a classe está contida. 32 Notação Básica para Classe Nome (obrigatório) Forma Atributos (opcionais) origem mover() redimensionar() exibir() Operações (opcional) Abstração de alguma coisa que se pode fazer com um objeto e que é compartilhada por todos os objetos da classe. O número de operações pode ser qualquer, inclusive zero. Pode-se especificar a assinatura da operação: seus parâmetros, tipo deles e o tipo de retorno 33 Visibilidade • Pode-se usar marcações de acesso para especificar o tipo de acesso permitido aos atributos e operações • Classificador pode ser classes, interfaces, componentes, nós, use cases, subsistemas público: uso: por todos os classificadores protegido: uso: por qualquer descendente do classificador privado: uso: somente pelo próprio classificador 34 UML - Diagrama de Classes Classes Produto Código : integer Saldo : float Preço : float Observação : String Cadastrar (cod : integer = default, saldo : float = default) : Produto ValidarQuantidade (quant : float = default) : boolean CalcularDesconto (vr : float = default) : valor ImprimirDetalhe (cod : integer = default, quant : float BaixarEstoque (cod : integer = default, quant : float = default) = default) : return Atributos Nome: Tipo = ValorInicial Serviços Nome (ListaParam): TipoRetorno 35 Relacionamentos • As classes não vivem sozinhas. Os relacionamentos ligam as classes/objetos entre si criando relações lógicas entre elas/eles. TIPOS DE RELACIONAMENTOS – Associações • Agregação • Composição – Dependências – Generalizações 36 Associação Associação - especifica que objetos de um elemento estão conectados a objetos de outros elementos Fornecedor 1 1..n Produto Cardinalidade de uma associação 0..1 (opcional- 0 ou mais) 0..* (muitos- 0 ou mais) 1..n ( de 1 a n) 1 (exatamente 1) 1..* (1 ou mais) 37 Associação com Papéis • Papéis: um dos lados da associação. Nomes de papéis são necessários para associação entre dois objetos de mesma classe. Companhia 1 subordinado 1 .. * Empregado 0 .. * 1 38 Associação com atributos Modela as propriedades associadas com uma associação. As propriedades devem ser representadas por uma classe Carro Cliente CliCPF : String CliNome : String CliEndereco : String CliTelefone : String CliDivida : Float Aluga Aluguel 0..1 0..* Alugado por 0..* CarPlaca : String CarDescricao : String CarSituacao : Integer = 0 CarAno : Integer CarKm : Float CarPrecoKm : Float CarTaxa : Float CarBmp : TImage CarObservacao : TMemo Aluguel AluDataInicio : Date = GetDate 39 Agregação/Composição Agregação (Referência/Valor)- relacionamento fraco do tipo “é parte de”. Tipo especial de associação. Composição: relacionamento forte do tipo “é parte de “. A composição entre um elemento (o “todo”) e outros elementos (“as partes”) indica que as partes só podem pertencer ao “todo”e são criadas e destruídas com ele. Polígono agregação Ponto Contorno 40 Generalização/Dependência Herança/Generalização - relacionamento entre um elemento mais geral (superclasse ou pai) e um mais específico (subclasse ou filho). Pessoa Pessoa Física Pessoa Jurídica Dependência - relacionamento de uso, no qual uma mudança na especificação de um elemento pode alterar a especificação do elemento dependente Cursos AgendaCursos Remove(c:Cursos) Add(c:Cursos) 41 UML - Diagrama de Classes Biblioteca Pessoa nome : String endereço : String 0..* 1 1..* nome : String endereco : String RG : String 0..* Professor titulacao : String Livro edicao : String ano : int titulo : String autor : String editora : String Estudante numeroMatricula : String anoIngresso : int 42 Exemplo Diagrama de Classes Escola Departamento 1 0..1 1..* 1..* 1..* * Aluno 1..* frequenta leciona Curso * Instrutor 0..1 responsavel * 43 Herança Múltipla • Ocorrem múltiplas superclasses para uma mesma subclasse veículo Veículo Terrestre Veículo Aquático Veículo Anfíbio 44 UML - Diagrama de Seqüência • Enfatizam a ordenação das mensagens trocadas entre os objetos (num certo tempo). Quando um objeto envia uma mensagem para outro, o objeto que recebe a mensagem pode enviar outra mensagens e assim por diante, formando uma seqüência de mensagens. • Um cenário é uma seqüência específica de ações que ilustra um comportamento. • Diagramas de seqüência podem modelar apenas um cenário ou um conjunto de cenários. Podem mostrar decisões simples e iterações. 45 UML - Diagrama de Seqüência EmpresaTelefônica: Central Jose : Chamador a {b - a < 1 seg.} b c {d - c < 1 seg.} d Antonio : Chamado 1: retira fone do gancho 2: tom de discar 3: discagem do número chamado 4: tom de controle 5: toque de chamada 6: retira fone do gancho 7: conversação 8: conversação 9: repõe fone no gancho 10: tom de ocupado 11: repõe fone no gancho 46 Diagrama de Seqüência para Use Case – Reservar Tipo de Acomodação AtorFuncionario : Funcionario TipoAcomodacao : tipoAcomodacao Cliente : hospede Reserva : ReservaAcomodacao ReservaAcomp. : reservaAcompanhante acomodacaodesejada VerificarDisp InfHospede InfReservaEfetuada InfReservaAcomponhantes msg "Reserva Feita" 47 Mensagens • Uma mensagem é a especificação de uma comunicação entre objetos, pelos quais são passadas informações para que alguma atividade ocorra. • Tipos de Mensagens: – – – – – Chamada (Call) Retorno (Return) Envio (Send) Criação (Create) Destruição (Destroy) 48 Diagramas de Colaboração • Enfatizam a organização dos objetos em uma interação. • Praticamente tudo o que pode ser mostrado em um Diagrama de Seqüência também pode ser mostrado em um Diagrama de Colaboração. Assim a partir de um podese transformar no outro. 49 UML - Diagrama de Sequência e Colaboração Objetos e Atores: Pedro : Pessoa Pedro Pedro : Chamador 1: retira fone do gancho 3: discagem do número chamado 9: repõe fone no gancho EmpresaTelefônica : Central 7: conversação 4: tom de controle 2: tom de discar Jose : Chamador 5: toque de chamada 8: conversação 10: tom de ocupado 11: repõe fone no gancho 6: retira fone do gancho Antonio : Chamado 50 Exemplo de Diagrama de Colaboração Janela de entrada de pedido 1: preparar () 1.1.2.1:estoqueBaixo:= verificEstoqueBaixo p:Pedido 1.1 itemde pedido. preparar() 1.1.1:emEstoque:=verificar() 1.1.2:(emEstoque):=remover() :ItemPedido 1.1.3:emEstoque <<criar>> :RemEntrega :RemEstoque 1.1.2.2[estoqueBaixo] <<criar>> :ItemRenovEstoque 51 Diagramas de Estado • Componentes: Estado e Transição • Partes de um estado: – Nome – Atividades de entrada (Entry) – Atividades de Saída (Exit) – Atividades (Do) • Transição: relacionamento entre dois estados indicando que o objeto no primeiro estado irá executar certas ações e entrar no segundo estado quando o evento especificado ocorre e as condições forem satisfeitas • Partes de uma transição: – Estado fonte – Evento de disparo – Condição de guarda – Ação 52 – Estado destino UML - Diagrama de Estados Sintaxe de Evento e Ação evento( argumentos )[ condição ] / ação ^eventos(argumentos) nome do estado Aguardando com Alarme Desligado Cancelamento / DesBotãoCancela IniciaAcerto / HabBotãoConfirma ^DesBotãoConfirma ^HabBotãoCancela HabBotãoAcerto DesBotãoAcerto Cancelamento / DesBotãoCancela ^DesBotãoConfirma HabBotãoAcerto Acertando Hora do Alarme Controlando Alarme Ligado entry: AcertarHoraAlarme do: MonitorarAlarmeLigado IniciaControle / DesBotãoCancela ^DesBotãoConfirma 53 HabBotãoAcerto UML - Diagrama de Estados Subestado Telefonando Dígito(n) Iniciando entry: IniciaTomDiscagem Dígito(n) Discando [ NúmeroVálido() ] entry: ComporNúmero(n) 54 Concorrência dentro de um objeto A A1 alarme ligado A2 12 hs inserir bateria alarme desligado 24 hs fim de bateria 55 UML - Packages Pacotes Distribuidora Pacote = mecanismo de propósito geral para organizar elementos em modelos , de maneira que seja fácil compreendê-los, Pacotes Lógicos Pacotes Componentes de código binário Vendas Unit1 UML - Packages Pacotes package Runnable.java Contém o nome de arquivo. Em Java pode-se usar uma especificação de package para representar as interfaces (classe abstrata que não possui variáveis de instâncias e os serviços são declarados sem corpo) Diagrama de Componentes Mostra a dependência entre componentes de software. Interface Pacotes Lógico global Venda Compra 58 Dependência de Pacote e Componente c:\sistema\financeiro Cotação.dll 59 UML - Visão Componentes É composto por: Distribuidora Distribuidora.java Programa Principal (arquivo raiz [origem] do programa) .java que contém o main. Package Runnable.java espec_sub Especificação do Package (classes Especialização do subprograma abstratas) Cliente.java corpo_sub Corpo Package Corpo do subprograma UML - Diagrama de Componentes Distribuidora.java Fornecedor.java Cliente.java Produto.java Pedido.java UML - Visão Deployment O que é? É composto por: 1. Processador 2. Dispositivo 3. Conexão PC Pentium 300 Modem PC Pentium 200 Fibra Ótica Impressora HP 700 UML - Roteiro Projeto: < Nome do Sistema > 1 - Introdução 1.1 - Descrição do problema 1.2 - Objetivos do Sistema 1.3 - Soluções alternativas 1.4 - Descrição da solução escolhida 2 - Visão “Use Case” – nível Análise 2.1 - Definição dos atores(Quem interage?) 2.2 - Lista de eventos 2.3 - Diagrama de Use Cases geral (Por assunto e por evento) 63 UML - Roteiro 3 – Visão Lógica – nível Análise 3.1 – Diagramas de Classes 4 - Gerência do Projeto 5 – Visão “Use Case”- nível Projeto 5.1 - Interface 5.2 - Diagramas de Seqüência 5.3 - Diagramas de Colaboração 5.4 - Diagramas de Estados 6- Visão Lógica – nível Projeto 6.1 - Diagramas de Classes 64