You are on page 1of 65

SESTINFO 2009

UML – Criando
Diagramas Eficientes
Rafael Guimarães Sakurai
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 2


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 3


O que é e por que usar UML?

• UML – Unified Modeling Language

• Definição
“É uma família de notações gráficas, apoiada
por um metamodelo único, que ajuda na
descrição e no projeto de sistemas de
software, particularmente daqueles construídos
utilizando o estilo orientado a objetos.”
Martin Fowler

• Por que usar UML?

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 4


Um pouco de história...

James Rumbaugh
Versão 0.9 Versão 1.1 Versão 1.3 Versão 1.5 Versão 2.1
e Grady Booch

Out/1995 Jan/1997 Jun/1998 2001 2005


Out/1994 Jun/1996 Nov/1997 Dez/1998 2002 2007

- Versão 0.8
- Ivar Jacobson
Versão 1.0 Versão 1.2 Versão 1.4 Versão 2.0
- “três amigos”

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 5


UML - Diagramas

• Lista de Diagramas
Diagrama Objetivo Grupo Diagrama
Classes Classe, características e relacionamentos. Estrutural
Componentes Estrutura e conexão de componentes. Estrutural
Estruturas Compostas Decomposição de uma classe em tempo de execução. Estrutural
Instalação Distribuição de artefatos nos nós. Estrutural
Objetos Exemplo de configurações de instâncias. Estrutural
Pacotes Estrutura hierárquica em tempo de compilação. Estrutural
Casos de Uso Como os usuários interagem com um sistema. Comportamental
Atividades Comportamento procedimental e paralelo. Comportamental
Máquinas de Estado Como os eventos alteram um objeto no decorrer de sua vida. Comportamental
Sequência Interação entre objetos; ênfase na sequência. Interação
Comunicação Interação entre objetos; ênfase nas ligações. Interação
Visão Geral da Interação Mistura de diagrama de sequência e de atividades. Interação
Sincronismo Interação entre objetos; ênfase no sincronismo. Interação

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 6


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 7


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 8


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.” Ivar Jacobson

• 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.

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 9


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 10


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 11


<<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 12


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 13


Diagrama de Caso de Uso
Descrição Diagrama
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.

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 14


Diagrama de Caso de Uso

• Exemplo de Caso de Uso para sacar dinheiro

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 15


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 16


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 17


Exemplo Prático

• Sistema de Pagamento de Serviços, realizar pagamento


de serviços

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 18


Resposta do exemplo prático

• Sistema de Pagamento de Serviços, realizar pesquisa


de serviços

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 19


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 20


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 21


UML – Diagrama de Classes

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 22


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 23


Atributos

• Um atributo é formado por:


visibilidade nome : tipo [multiplicidade] = valor inicial {propriedades}

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 24


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 25


Visibilidade

• Podemos definir as seguintes visibilidades em atributos


e operações:

- private
~ default
# protected
+ public

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 26


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 27


Comentário

• Os comentários ou notas são utilizados para adicionar


mais informações ao diagrama.

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 28


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 29


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 30


Associação

• Relacionamento simples entre duas classes:

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 31


Agregação

• Informa que uma classe faz parte de outra classe, mas


não de forma exclusiva.

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 32


Composição

• Informa que uma classe faz parte de outra classe de


forma exclusiva.

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 33


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 34


Classe de associação

• Utilizamos para realizar o relacionamento entre duas


classes:

• ou

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 35


Associação

• Podemos também ter uma associação para mesma


classe:

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 36


Navegabilidade

• Podemos informar qual a direção do relacionamento:

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 37


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 38


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 39


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 40


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 41


Exemplo

• Crie o diagrama de classes UML para a seguinte figura:

Inicio Pedido Pagamento Entrega Fim

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 42


Resposta exemplo prático

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 43


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 44


Resposta exemplo prático

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 45


Dependência

• Utilizado para informar que uma classe depende de


outra classe para executar alguma operação:

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 46


Dependência

• Palavras - chave de dependência:


<<call>>
<<create>>
<<dependency>>
<<use>>

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 47


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 48


Associação x Dependência

• Exemplo:

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 49


Classe Abstrata

• Utilizado para informar que uma classe não implementa


todos os seus métodos.

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 50


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 51


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 52


Interface

• Exemplo:

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 53


Pacote

• Utilizamos para organizar as classes:

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 54


Template

• É uma classe parametrizada para definir conjuntos


fortemente tipados.

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 55


Enumeration

• Utilizado para criar um conjunto fixo de valores:

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 56


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 57


Resposta exemplo prático

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 58


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 59


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 60


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 61


Adicionando o plug-in de UML no NetBeans

• No menu Ferramentas → Plug-ins


– Selecione em Plug-ins disponíveis → UML

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 62


Certificações UML

• OCUP – OMG Certified UML Professional

http://www.omg.org/uml-certification/exam_info.htm

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 63


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 64


Obrigado!

http://www.slideshare.net/rodrigocasca/uml-criando-diagramas-eficientes

Rafael Guimarães Sakurai e Rodrigo Cascarrolho 65

You might also like