UML 1 INTRODUÇÃO CEÇA MORAES [email protected] 05/11/2015 O que é um Modelo? 2 Construímos modelos para compreender melhor o sistema que estamos desenvolvendo Um modelo é uma realidade simplificação da Um modelo pode ser comportamental estrutural ou 05/11/2015 O que é um modelo? 3 05/11/2015 O que é um modelo? 4 05/11/2015 Por que modelar software? 5 Ajuda a ter uma visão geral do sistema Permite especificar a estrutura e o comportamento do sistema Proporciona um guia para a construção do sistema Documenta as decisões tomadas 05/11/2015 O que é a UML? 6 Unified Modeling Language: ...uma linguagem gráfica para visualizar, especificar, construir e documentar os um sistema de software. artefatos de ...resultado da unificação das notações utilizadas nos métodos Booch, OMT (Object Modeling Technique) e OOSE (Object-Oriented Software Engineering). ...adotada por grande parte da indústria de software e por fornecedores de ferramentas CASE como linguagem padrão de modelagem. …utilizada com qualquer processo de desenvolvimento 05/11/2015 UML 7 A UML é uma linguagem para visualização No processo de desenvolvimento de sistemas de software, é quase impossível a visualização de toda a estrutura de um sistema sem o uso de modelos A UML fornece os símbolos gráficos para a representação de artefatos de software. Por trás de cada símbolo empregado na notação da UML, existe uma sintaxe e uma semântica bem-definidas. Assim, o desenvolvedor pode usar a UML para escrever modelos, diminuindo a ambigüidade em sua interpretação 05/11/2015 UML 8 A UML é uma linguagem para construção Os modelos de UML podem ser diretamente ”traduzidos” para várias linguagens de programação É possível mapear os modelos da UML para linguagens de programação tais como, Java, C++ e Visual Basic. Realização de uma engenharia de produção: geração de código a partir de um modelo em UML O processo inverso, a engenharia reversa, também é possível, com a reconstrução de um modelo a partir de sua implementação 05/11/2015 UML 9 A UML é uma linguagem para documentação Cada modelo criado é um artefato de software Diagrama de Casos de Uso Diagrama de Classes blogSystem Criar Blog Criar Comentario <<include>> Usuario <<include>> -dtCriacao:Date -titulo:String -dono:UsuarioBlog -conteudos :Vector Ler Nota 1 dono U s u a rio B l o g Ler Comentario <<include>> -email:String 0..* usuario usa 1 +notificarEx clus ao:void Remover Comentario Remover Conteudo 1 … +criarNota:void +ex ibirConteudo:void +comentar:void +lerComentarios:Vector +removerC onteudo:void +lerNotas :Vector +Blog : SIM autor : AnalisadorMatricula 0..* Remover Nota C o n te u d o 0..* Dono do blog Diagrama de Seqüência B lo g 0..* Ler Conteudo Criar Nota -dtCriacao:Date -texto:String -autor:Us uarioBlog 1: submeterFormulario(f) +Conteudo +ex ibirConteudo:void N o ta -comentarios:Vector -attribute1:int +comentar:void +lerComentarios:Vector +finaliz e:void 2: adicionar(a,d ) C o m e n ta r io 0..* +finaliz e:void 05/11/2015 05/11/2015 Linguagem de Diagramas 10 Diagramas de Seqüência Diagramas de Colaboração Diagrama de Casos de Uso Diagramas de Classe Modelos Diagramas de Estado Diagramas de Atividade Diagramas de Objetos Diagramas de Componentes Ponto de Vista Dinâmico Diagrama de Deployment Ponto de Vista Estático 05/11/2015 Casos de Uso 11 05/11/2015 Casos de Uso 12 Um caso de uso é uma seqüência de ações realizada por um sistema que produz um resultado de valor observável para determinado ator Todos os casos de uso juntos devem descrever a funcionalidade completa do sistema (requisitos) Atores são fundamentais para a descoberta dos casos de uso 05/11/2015 Casos de Uso 13 Cenários para os requisitos Detalhamento dos requisitos para implementação Interação dos atores com o sistema 05/11/2015 Casos de Uso 14 Este caso de uso é responsável por autenticar um usuário do sistema. Descrição Narrativa Pré-condição: nenhuma Pós-condição: um usuário válido é logado e sua sessão é registrada no sistema. Fluxo de eventos principal 1. O cliente informa login e senha. 2. O sistema verifica se o login e a senha são válidos (verifica-se se o login e senha pertencem a uma conta). 3. O sistema registra o início de uma sessão de uso. Fluxos secundários - No passo 2, se o login ou a senha forem inválidos, o sistema exibe uma mensagem e volta ao passo 1. 05/11/2015 Diagrama de Casos de Uso ATOR 15 CASO DE USO Solicitar histórico ATOR <<estende>> Solicitar histórico do semestre atual <<estende>> Solicitar histórico de todos os semestres Estudante <<inclui>> Matricular aluno Verificar dependências Secretária 05/11/2015 Atores – Especialização 16 É possível definir tipos gerais de atores e especializá-los usando o relacionamento de Cliente especialização ClienteEspecial 05/11/2015 Atores – Especialização 17 Na generalização de ator o filho herda o papel que o pai pode desempenhar em um caso de uso Facilita a leitura do modelo de caso de uso 05/11/2015 Diagrama de Classes 18 Modelar o vocabulário de um sistema do ponto de vista do usuário/problema ou do desenvolvedor/solução Ponto de vista do usuário/problema – na fase de captura e análise de requisitos, em paralelo com a identificação dos casos de uso Vocabulário do desenvolvedor/solução – na fase de projeto (design) Construído e refinado ao longo das várias fases do desenvolvimento do software 05/11/2015 Diagrama de Classes 19 Também serve para: Especificar relacionamentos e colaborações Especificar esquemas lógicos de bases de dados Especificar visões (estrutura de dados de formulários, relatórios, etc.) Modelos de objetos de domínio, negócio, análise e projeto Base da implementação 05/11/2015 Diagrama de Classes 20 Cliente Pedido -codigo: Integer -dataRecebido -total: Currency 0..* faz 1 +confirmar() +cancelar() -calcularTotal():Currency gerarNovoCodigo: Integer -nome: String -endereco: String -dataPrimeiraCompra: Date -dataUltimaCompra: Date -totalComprado: Currency #creditoPermitido: Currency #nivelCredibilidade() itens Item de Pedido -quantidade: Integer -preco: Currency -emEstoque: Boolean Cliente pessoa-jurídica nomeContato: String telefones[1..10]: String CGC: String FAX[1..3]: String Cliente pessoa-física nome: String CPF: String numCartaoCredito colocarListaNegra() * Produto representante de vendas Empregado 05/11/2015 IPessoa Diagrama de Objetos 21 Oferece uma visão estática das instâncias (objetos) das classes Registrar os objetos e seus relacionamentos num determinado instante de tempo 05/11/2015 Diagrama de Objetos 22 Curso Professor Aluno ministra -matrícula: String -nome: String [1..3] -codDisciplina: String [1..5] -descrição: String -codTurma: String * -matrícula: String -nome: String -período: Integer [0..10] p1: Professor p2: Professor matricula: "205-6712-09" nome: "Jaelson Castro" c1: Curso : Curso c2: Curso : Curso codCurso: "IF291" descrição: "MPS" codTurma: I7 codCurso: "IF185" descrição: "AER" codTurma: I6 c3: Curso : Aluno : Aluno : Aluno : Aluno : Aluno :aluno Bill :aluno matricula: "562746134" nome: "John Major" Lewinsky matricula: "219846534" nome: "Nelson Mandella" : Aluno 05/11/2015 Diagrama de Objetos 23 05/11/2015 Diagrama de Objetos 24 05/11/2015 Diagrama de Sequência e as mensagens trocadas entre eles ao longo do tempo Exibe objetos 25 Retrata a ordenação temporal das mensagens Descreve a maneira como os grupos de objetos colaboram em algum comportamento ao longo do tempo registra o comportamento de um único caso de uso 05/11/2015 Diagrama de Sequência 26 : ClienteAtor : TelaLogin : ControladorLogin : CadastroContas efetuarLogin(login, senha) efetuarLogin(login, senha) existeConta(login, senha) registraSessao(login) 05/11/2015 Diagrama de Sequência 27 05/11/2015 Diagrama de Colaboração 28 Ilustra o fluxo de troca de mensagens entre objetos Mostram interação entre objetos sem (muita) preocupação com a seqüência das ações São adequados para especificar um processo na lógica do programa 05/11/2015 Diagrama de Colaboração 29 Janela de entrada de pedido 1: preparar() p: Pedido 1.1.2.1: estoqueBaixo := verif icEstoqueBaixo() 1.1: *[para cada item do pedido] preparar() 1.1.1 : emEstoque := verif icar() 1.1.2 : [emEstoque] remover() : ItemPedido 1.1.3 : [emEstoque] <<criar>> :ItemEntrega :ItemEstoque 1.1.2.2 [estoqueBaixo] <<criar>> :ItemRenovEstoque 05/11/2015 Diagrama de Colaboração 30 05/11/2015 Diagrama de Estados 31 Exibe os estados e as transições entre estes Modela uma máquina de estados (seqüência do ciclo de vida de um objeto) Especifica as seqüências de estados pelos quais um objeto passa durante seu tempo de vida em resposta a eventos 05/11/2015 Diagrama de Estados 32 05/11/2015 Diagrama de Atividades 33 É um tipo especial de gráfico de estados Exibe o fluxo de atividades no sistema Atividade: operação que resulta na mudança de um estado do sistema Geralmente é utilizado para modelar uma função do sistema 05/11/2015 Diagrama de Atividades 34 Pessoa [sem café] H [achou café] Colocar café no filtro [sem Coca] Procurar bebida Adicionar água à máquina [achou Coca] Pegar xícara Pegar lata de Coca Colocar filtro na máquina Ligar máquina Filtrar café Colocar café na xícara Beber H 05/11/2015 Diagrama de Componentes 35 organizações e as dependências de um conjunto de componentes de SW Retrata uma visão estática da Exibe as do SOFTWARE Relacionado com o diagrama de classes implementação classes e interfaces em componentes são mapeadas 05/11/2015 Diagrama de Componentes 36 Cadastro.exe <<link>> Usuários FormCadastro.html Banco <<link>> Autenticacao.exe Senhas Principal.html FormEntrada.html 05/11/2015 Diagrama de Componentes 37 05/11/2015 Diagrama de Implantação 38 Exibe a configuração dos nós de processamento e dispositivos Retrata uma visão estática da organização do hardware Relacionado com o diagrama de componentes nó inclui um ou mais componentes um 05/11/2015 Diagrama de Implantação 39 PC - G309 Nestscape Communicator 5.0 Principal.html servidorWeb FormCadastro.html Autenticação.exe servidorDeArquivos Cadastro.exe FormEntrada.html servidorBancoDeDados O SGBD a ser utilizado ainda não foi escolhido. SGBD 05/11/2015 Diagrama de Implantação 40 05/11/2015 PERGUNTAS ??? 41 05/11/2015 Bibliografia 42 The Unified Modelling Language User Guide (Grady Booch) The Unified Modelling Language Reference Manual (James Rumbaugh) The Unified Software Development Process (Ivar Jacobson) UML Distilled (Martin Fowler) 05/11/2015