Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
UML – Criando Diagramas Eficientes Rafael Guimarães Sakurai Rodrigo Cascarrolho SESTINFO 2009 Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Quem somos? Rafael Guimarães Sakurai (rafael.sakurai@metodista.br) Possui graduação em Ciência da Computação pela Universidade Metodista de São Paulo (2005), especialista em Engenharia de Componentes com Java Enterprise e Webservices pela Faculdade de Informática e Administração Paulista. Atualmente é Analista Desenvolvedor de software da Virginia Surety. Tem experiência na área de Ciência da Computação, com ênfase em Linguagens de Programação. Possui as seguintes certificações: SCJP 5.0, SCWCD 1.4 e SCSNI. Rodrigo Cascarrolho (rodrigo.cascarrolho@metodista.br) Possui graduação pela Pontifícia Universidade Católica de São Paulo (2003). Atualmente é Desenvolvedor Java da Confluence Soluções em Informática Ltda. Tem experiência na área de Ciência da Computação com ênfase em Metodologia e Técnicas da Computação. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Agenda O que é UML História Diagramas UML Diagrama de Caso de Uso Diagrama de Classes Ferramentas de Modelagem Certificação Bibliografia * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * O que é e por que usar UML? UML – Unified Modeling Language Definição Por que usar UML? * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Um pouco de história... Out/1994 * Out/1995 Jun/1996 Jan/1997 Nov/1997 Jun/1998 Dez/1998 2001 2005 2007 2002 Rafael Guimarães Sakurai e Rodrigo Cascarrolho * UML - Diagramas Lista de Diagramas * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Criando um projeto UML no NetBeans Para iniciar o NetBeans: Iniciar / Programas / Netbeans / NetBeans IDE 6.5 Para criar um novo Projeto UML: Arquivo - Novo projeto * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Criando um projeto UML no NetBeans Digite o nome e o local onde será criado o projeto: Na próxima tela clique em Cancelar e teremos a seguinte estrutura. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * UML – Diagrama de Caso de Uso “Documento narrativo que descreve a sequência de eventos de um ator que usa um sistema para completar um processo.” Representa a interação entre um usuário (humano ou sistema) e o sistema. Não descreve como o software deverá ser construído, mas sim como ele deverá se comportar quando estiver pronto. Corresponde a um conjunto de ações com um objetivo comum. * Ivar Jacobson Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Ator Humano ou entidade. Interage com o sistema. Iniciam o sistema. Fornecem dados. Usam as informações do sistema. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Caso de Uso Unidade de um trabalho significante. Representa um processo. Iniciado por um ator ou outro caso de uso. Exemplos: “Login para o sistema”, “Registrar no sistema”, “Criar pedidos”, etc. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * <<include>> e <<extend>> <<include>> Relacionamento com outro caso de uso que sempre será executado. <<extend>> Relacionamento com outro caso de uso que pode ou não ser executado. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Diagrama de Caso de Uso Sistema de Pagamento de Serviços O sistema será responsável por gerenciar os pagamentos dos serviços prestados por empresas e freelancers. O pagamento do serviço poderá ser efetuado apenas pelo usuário que possuir o perfil específico para esta função. Ao ser realizado qualquer serviço e pagamentos, o sistema gera e envia uma mensagem de e-mail aos prestadores do serviço. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Diagrama de Caso de Uso * Pagamento de Serviço Cenário Principal de Sucesso: 1. O usuário acessa o sistema 2. O usuário pesquisa o serviço a ser pago 3. O sistema apresenta as informações do serviço 4. O usuário inicia o processo de pagamento 5. O sistema envia a confirmação do pagamento ao prestador do serviço 6. O sistema encerra o processo de pagamento Extensões: 1a. Usuário não autorizado 1a.1 O usuário não possui perfil para realizar pagamentos 1a.2 O usuário é direcionado ao passo 6. 3a. Serviço não finalizado 3a.1 O sistema apresenta que o serviço não foi finalizado 3a.2 O usuário é direcionado ao passo 6. Descrição Diagrama Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Diagrama de Caso de Uso * Exemplo de Caso de Uso para sacar dinheiro Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Criando um diagrama de Caso de Uso No item Diagramas -> Novo -> Diagrama... Selecione a opção Diagrama de Caso de Uso * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Criando um diagrama de Caso de Uso Ao clicar em Finalizar teremos a seguinte tela: * 1) Área para criação do diagrama de Caso de Uso 2) Paleta com os itens que podem ser adicionados no diagrama de Caso de Uso Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Exemplo Prático Sistema de Pagamento de Serviços, realizar pagamento de serviços * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Resposta do exemplo prático Sistema de Pagamento de Serviços, realizar pesquisa de serviços * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * O que colocar no diagrama de Caso de Uso Melhor fazer menos do que fazer demais. Breve e fácil de ler. Preferência na descrição textual. Limitar os relacionamentos com <<include>> e <<extend>>. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * O que não colocar no diagrama de Caso de Uso Textos longos. Muitas extensões. Todos diagramas se chamando. Todas as ações CRUD separadas. Detalhes da tela (botões, combos, links, etc). Não é um fluxograma! * Atenção: Não relacione o caso de uso com as classes do sistema. Rafael Guimarães Sakurai e Rodrigo Cascarrolho * UML – Diagrama de Classes * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Estrutura da classe Uma classe em UML possui três partes: Nome da Classe Atributos Operações Podemos abreviar a declaração da classe, caso não influencie o entendimento do diagrama: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Atributos Um atributo é formado por: visibilidade nome : tipo [multiplicidade] = valor inicial {propriedades} * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Operações Uma operação é formada por: visibilidade nome (parâmetros) : tipo de retorno {propriedades} O parâmetro de um método é formado por: nome : tipo [multiplicidade] = valor inicial * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Visibilidade Podemos definir as seguintes visibilidades em atributos e operações: - private ~ default # protected + public * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Atributos e operações estático Podemos definir atributos e operações como sendo estáticos, ou seja, são referentes a classe e não aos seus objetos. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Comentário Os comentários ou notas são utilizados para adicionar mais informações ao diagrama. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Comentário O comentário pode ser utilizado em qualquer diagrama, podendo ou não ser vinculado a algum elemento. Utilizamos também o comentário para definir alguma regra de restrição, para isto precisamos adicionar { } entre a restrição: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Associações Utilizado para representar o relacionamento entre classes, as associações podem ser: Associação Agregação Composição Classe de associação As classes que fazem parte de um relacionamento também são chamadas de TODO (responsável pelo relacionamento) e PARTE (usado pelo relacionamento). * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Associação Relacionamento simples entre duas classes: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Agregação Informa que uma classe faz parte de outra classe, mas não de forma exclusiva. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Composição Informa que uma classe faz parte de outra classe de forma exclusiva. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Agregação x Composição A diferença entre ambos é: Agregação – se excluir a classe responsável pelo relacionamento, não deve excluir a classe que ele possui relacionamento. Composição – se excluir a classe responsável pelo relacionamento, então deve excluir a classe que ele possui relacionamento. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Classe de associação Utilizamos para realizar o relacionamento entre duas classes: ou * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Podemos também ter uma associação para mesma classe: Associação * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Navegabilidade Podemos informar qual a direção do relacionamento: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Multiplicidade A multiplicidade é utilizada para definir a quantidade de objetos devem ser criados: 0 .. 1 (zero ou um) 1 (um) * (zero ou muitos) * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Multiplicidade Quando utilizamos atributos para informar coleção de objetos, podemos também adicionar propriedades na multiplicidade: {ordered} - Ordenado {unordered} - Não ordenado {unique} - Único {nonunique} - Não único {bag} - Conjunto não ordenado e não único * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Criando um diagrama de Classes No item Diagramas -> Novo -> Diagrama... Selecione a opção Diagrama de Caso de Uso * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Criando um diagrama de Classes Ao clicar em Finalizar teremos a seguinte tela: * 1) Área para criação do diagrama de Caso de Uso 2) Paleta com os itens que podem ser adicionados no diagrama de Caso de Uso Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Exemplo Crie o diagrama de classes UML para a seguinte figura: * Inicio Fim Pedido Pagamento Entrega Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Resposta exemplo prático * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Exemplo prático Crie um diagrama de classes UML para o sistema de Agendamento de Entrega de Produtos: O sistema deve permitir o agendamento de uma visita por parte de um funcionário, ao cliente de nossa empresa. Esta visita deverá ser realizada em hora e local definido pelo cliente para poder lhe entregar os produtos que foram comprados em nossa loja. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Resposta exemplo prático * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Dependência Utilizado para informar que uma classe depende de outra classe para executar alguma operação: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Dependência Palavras - chave de dependência: <<call>> <<create>> <<dependency>> <<use>> * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Associação x Dependência A diferença básica entre ambos: Associação temos um atributo da classe relacionada. Dependência utilizamos a classe relacionada, para passar um parâmetro, chamar um método, criar um objeto, etc. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Associação x Dependência Exemplo: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Classe Abstrata Utilizado para informar que uma classe não implementa todos os seus métodos. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Herança Utilizamos herança quando queremos declarar subclasses, permitindo reutilizar os códigos já declarados na superclasse. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Interface Utilizamos interface para definir as operações básicas que uma classe de seu tipo precisa implementar. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Interface Exemplo: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Pacote Utilizamos para organizar as classes: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Template É uma classe parametrizada para definir conjuntos fortemente tipados. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Enumeration Utilizado para criar um conjunto fixo de valores: * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Exemplo prático Crie um diagrama de classe em UML para o Sistema de Envio de Produtos: O sistema deve controlar a ordenação do envio dos produtos por preço ou por endereço do cliente. De acordo com a quantidade de produtos, também precisamos alocar um veiculo que pode ser uma Van ou uma Caminhonete. Também precisamos controlar o status do envio que pode ser, aguardando pagamento, buscando em estoque, saída para entrega ou entregue. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Resposta exemplo prático * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * O que colocar no diagrama de classes Concentre-se nas áreas principais do sistema. O necessário para que as pessoas envolvidas possam entender. Mantenha as notações simples. Gere um diagrama de classe flexível, facilitando futuras atualizações. Desenvolva o diagrama baseado na metodologia adotada, podendo ser um diagrama de negocio, diagrama especifico por áreas do sistema ou diagrama com todas as classes envolvidas no sistema. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * O que não colocar no diagrama de classes Para não aumentar a complexidade de um diagrama de classes, normalmente não adicionamos no diagrama: Classes que representam telas. Classes de conexão e acesso ao banco de dados. Classes de API’s da linguagem ou de terceiros. Não tente usar todas as notações disponíveis no mesmo diagrama. Não desenhe modelos para tudo, a menos que seja realmente necessário. * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Ferramentas IDE Eclipse UML - http://www.eclipseuml.com Jude - http://jude.change-vision.com NetBeans – http://www.netbeans.org Magic Draw - http://secure.nomagic.com Microsoft Office Visio - http://office.microsoft.com/pt-br/visio/default.aspx Poseidon - http://www.gentleware.com Enterprise Architect - http://www.sparxsystems.com.au/ * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Adicionando o plug-in de UML no NetBeans No menu Ferramentas → Plug-ins Selecione em Plug-ins disponíveis → UML * 1 2 Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Certificações UML OCUP – OMG Certified UML Professional http://www.omg.org/uml-certification/exam_info.htm * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Referencia bibliografica [Booch, Rumbaugh e Jacobson, I.] Grandy Booch, James Rumbaugh e Ivar Jacobson, UML: Guia do Usuário, 3ª Ed. Campus, 2005. [Fowler] Martin Fowler, UML Essencial, 3ª Ed. Bookman, 2005. [Guedes] Gilleanes T. A. Guedes, UML: Uma abordagem pratica, 3ª Ed. Novatec, 2008. [Cardoso] Caíque Cardoso, UML na prática: do problema ao sistema, Ed. Ciência Moderna, 2003 UML - http://www.uml.org Wikipédia – http://www.wikipedia.org * Rafael Guimarães Sakurai e Rodrigo Cascarrolho * Obrigado! http://www.slideshare.net/rodrigocasca/uml-criando-diagramas-eficientes * * * Nome de classes no singular *
Compartilhar