You are on page 1of 65

SESTINFO 2009

UML Criando
Diagramas Eficientes
Rafael Guimares Sakurai
Rodrigo Cascarrolho

Quem somos?
Rafael Guimares Sakurai (rafael.sakurai@metodista.br)
Possui graduao em Cincia da Computao pela Universidade
Metodista de So Paulo (2005), especialista em Engenharia de
Componentes com Java Enterprise e Webservices pela Faculdade de
Informtica e Administrao Paulista. Atualmente Analista
Desenvolvedor de software da Virginia Surety. Tem experincia na rea
de Cincia da Computao, com nfase em Linguagens de
Programao. Possui as seguintes certificaes: SCJP 5.0, SCWCD
1.4 e SCSNI.

Rodrigo Cascarrolho (rodrigo.cascarrolho@metodista.br)


Possui graduao pela Pontifcia Universidade Catlica de So Paulo
(2003). Atualmente Desenvolvedor Java da Confluence Solues em
Informtica Ltda. Tem experincia na rea de Cincia da Computao
com nfase em Metodologia e Tcnicas da Computao.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

Agenda

O que UML
Histria
Diagramas UML
Diagrama de Caso de Uso
Diagrama de Classes
Ferramentas de Modelagem
Certificao
Bibliografia

Rafael Guimares Sakurai e Rodrigo Cascarrolho

O que e por que usar UML?


UML Unified Modeling Language
Definio
uma famlia de notaes grficas, apoiada
por um metamodelo nico, que ajuda na
descrio e no projeto de sistemas de
software, particularmente daqueles construdos
utilizando o estilo orientado a objetos.
Martin Fowler

Por que usar UML?

Rafael Guimares Sakurai e Rodrigo Cascarrolho

Um pouco de histria...

James Rumbaugh
e Grady Booch

Verso 0.9

Jan/1997

Out/1995

Out/1994
- Verso 0.8
- Ivar Jacobson
- trs amigos

Verso 1.1

Jun/1996

Verso 1.0

Verso 1.3

Jun/1998

Nov/1997

Verso 1.2

Verso 1.5

2001

Dez/1998

Verso 1.4

Verso 2.1

2005

2002

2007

Verso 2.0

Rafael Guimares Sakurai e Rodrigo Cascarrolho

UML - Diagramas
Lista de Diagramas
Diagrama

Objetivo

Grupo Diagrama

Classes

Classe, caractersticas e relacionamentos.

Estrutural

Componentes

Estrutura e conexo de componentes.

Estrutural

Estruturas Compostas

Decomposio de uma classe em tempo de execuo.

Estrutural

Instalao

Distribuio de artefatos nos ns.

Estrutural

Objetos

Exemplo de configuraes de instncias.

Estrutural

Pacotes

Estrutura hierrquica em tempo de compilao.

Estrutural

Casos de Uso

Como os usurios interagem com um sistema.

Comportamental

Atividades

Comportamento procedimental e paralelo.

Comportamental

Mquinas de Estado

Como os eventos alteram um objeto no decorrer de sua vida.

Comportamental

Sequncia

Interao entre objetos; nfase na sequncia.

Interao

Comunicao

Interao entre objetos; nfase nas ligaes.

Interao

Viso Geral da Interao

Mistura de diagrama de sequncia e de atividades.

Interao

Sincronismo

Interao entre objetos; nfase no sincronismo.

Interao

Rafael Guimares 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 Guimares Sakurai e Rodrigo Cascarrolho

Criando um projeto UML no NetBeans


Digite o nome e o local onde ser criado o projeto:

Na prxima tela clique em Cancelar e teremos a


seguinte estrutura.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

UML Diagrama de Caso de Uso


Documento narrativo que descreve a sequncia de
eventos de um ator que usa um sistema para completar
um processo.

Ivar Jacobson

Representa a interao entre um usurio (humano ou


sistema) e o sistema.
No descreve como o software dever ser construdo,
mas sim como ele dever se comportar quando estiver
pronto.
Corresponde a um conjunto de aes com um objetivo
comum.
Rafael Guimares Sakurai e Rodrigo Cascarrolho

Ator

Humano ou entidade.
Interage com o sistema.
Iniciam o sistema.
Fornecem dados.
Usam as informaes do sistema.

Rafael Guimares 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 Guimares 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 no ser
executado.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

12

Diagrama de Caso de Uso

Sistema de Pagamento de Servios


O sistema ser responsvel por gerenciar os pagamentos dos servios
prestados por empresas e freelancers. O pagamento do servio poder ser
efetuado apenas pelo usurio que possuir o perfil especfico para esta funo.
Ao ser realizado qualquer servio e pagamentos, o sistema gera e envia uma
mensagem de e-mail aos prestadores do servio.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

13

Diagrama de Caso de Uso


Diagrama

Descrio
Pagamento de Servio
Cenrio Principal de Sucesso:
1. O usurio acessa o sistema
2. O usurio pesquisa o servio a ser pago
3. O sistema apresenta as informaes do servio
4. O usurio inicia o processo de pagamento
5. O sistema envia a confirmao do pagamento ao
prestador do servio
6. O sistema encerra o processo de pagamento
Extenses:
1a. Usurio no autorizado
1a.1 O usurio no possui perfil para realizar pagamentos
1a.2 O usurio direcionado ao passo 6.
3a. Servio no finalizado
3a.1 O sistema apresenta que o servio no foi finalizado
3a.2 O usurio direcionado ao passo 6.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

14

Diagrama de Caso de Uso


Exemplo de Caso de Uso para sacar dinheiro

Rafael Guimares Sakurai e Rodrigo Cascarrolho

15

Criando um diagrama de Caso de Uso


No item Diagramas -> Novo -> Diagrama...

Selecione a opo Diagrama de Caso de Uso

Rafael Guimares Sakurai e Rodrigo Cascarrolho

16

Criando um diagrama de Caso de Uso


Ao clicar em Finalizar teremos a seguinte tela:

1) rea para criao do diagrama de Caso de Uso


2) Paleta com os itens que podem ser adicionados no diagrama de Caso de
Uso

Rafael Guimares Sakurai e Rodrigo Cascarrolho

17

Exemplo Prtico
Sistema de Pagamento de Servios, realizar pagamento
de servios

Rafael Guimares Sakurai e Rodrigo Cascarrolho

18

Resposta do exemplo prtico


Sistema de Pagamento de Servios, realizar pesquisa
de servios

Rafael Guimares Sakurai e Rodrigo Cascarrolho

19

O que colocar no diagrama de Caso de Uso

Melhor fazer menos do que fazer demais.


Breve e fcil de ler.
Preferncia na descrio textual.
Limitar os relacionamentos com <<include>> e
<<extend>>.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

20

O que no colocar no diagrama de


Caso de Uso

Textos longos.
Muitas extenses.
Todos diagramas se chamando.
Todas as aes CRUD separadas.
Detalhes da tela (botes, combos, links, etc).
No um fluxograma!

Ateno: No relacione o caso de uso com as classes do sistema.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

21

UML Diagrama de Classes

Rafael Guimares Sakurai e Rodrigo Cascarrolho

22

Estrutura da classe
Uma classe em UML possui trs partes:
Nome da Classe
Atributos
Operaes

Podemos abreviar a declarao da classe, caso no


influencie o entendimento do diagrama:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

23

Atributos
Um atributo formado por:
visibilidade nome : tipo [multiplicidade] = valor inicial {propriedades}

Rafael Guimares Sakurai e Rodrigo Cascarrolho

24

Operaes
Uma operao formada por:
visibilidade nome (parmetros) : tipo de retorno {propriedades}

O parmetro de um mtodo formado por:


nome : tipo [multiplicidade] = valor inicial

Rafael Guimares Sakurai e Rodrigo Cascarrolho

25

Visibilidade
Podemos definir as seguintes visibilidades em atributos
e operaes:
~
#
+

private
default
protected
public

Rafael Guimares Sakurai e Rodrigo Cascarrolho

26

Atributos e operaes esttico


Podemos definir atributos e operaes como sendo
estticos, ou seja, so referentes a classe e no aos
seus objetos.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

27

Comentrio
Os comentrios ou notas so utilizados para adicionar
mais informaes ao diagrama.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

28

Comentrio
O comentrio pode ser utilizado em qualquer diagrama,
podendo ou no ser vinculado a algum elemento.
Utilizamos tambm o comentrio para definir alguma
regra de restrio, para isto precisamos adicionar { }
entre a restrio:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

29

Associaes
Utilizado para representar o relacionamento entre
classes, as associaes podem ser:

Associao
Agregao
Composio
Classe de associao

As classes que fazem parte de um relacionamento


tambm so chamadas de TODO (responsvel pelo
relacionamento) e PARTE (usado pelo relacionamento).

Rafael Guimares Sakurai e Rodrigo Cascarrolho

30

Associao
Relacionamento simples entre duas classes:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

31

Agregao
Informa que uma classe faz parte de outra classe, mas
no de forma exclusiva.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

32

Composio
Informa que uma classe faz parte de outra classe de
forma exclusiva.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

33

Agregao x Composio
A diferena entre ambos :
Agregao se excluir a classe responsvel pelo relacionamento,
no deve excluir a classe que ele possui relacionamento.

Composio se excluir a classe responsvel pelo


relacionamento, ento deve excluir a classe que ele possui
relacionamento.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

34

Classe de associao
Utilizamos para realizar o relacionamento entre duas
classes:

ou

Rafael Guimares Sakurai e Rodrigo Cascarrolho

35

Associao
Podemos tambm ter uma associao para mesma
classe:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

36

Navegabilidade
Podemos informar qual a direo do relacionamento:

Rafael Guimares 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 Guimares Sakurai e Rodrigo Cascarrolho

38

Multiplicidade
Quando utilizamos atributos para informar coleo de
objetos, podemos tambm adicionar propriedades na
multiplicidade:
{ordered}
{unordered}
{unique}
{nonunique}
{bag}

- Ordenado
- No ordenado
- nico
- No nico
- Conjunto no ordenado e no nico

Rafael Guimares Sakurai e Rodrigo Cascarrolho

39

Criando um diagrama de Classes


No item Diagramas -> Novo -> Diagrama...

Selecione a opo Diagrama de Caso de Uso

Rafael Guimares Sakurai e Rodrigo Cascarrolho

40

Criando um diagrama de Classes


Ao clicar em Finalizar teremos a seguinte tela:

1) rea para criao do


diagrama de Caso de Uso
2) Paleta com os itens que
podem ser adicionados no
diagrama de Caso de Uso

Rafael Guimares Sakurai e Rodrigo Cascarrolho

41

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

Inicio

Pedido

Pagamento

Entrega

Fim

Rafael Guimares Sakurai e Rodrigo Cascarrolho

42

Resposta exemplo prtico

Rafael Guimares Sakurai e Rodrigo Cascarrolho

43

Exemplo prtico
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 funcionrio, 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 Guimares Sakurai e Rodrigo Cascarrolho

44

Resposta exemplo prtico

Rafael Guimares Sakurai e Rodrigo Cascarrolho

45

Dependncia
Utilizado para informar que uma classe depende de
outra classe para executar alguma operao:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

46

Dependncia
Palavras - chave de dependncia:
<<call>>
<<create>>
<<dependency>>
<<use>>

Rafael Guimares Sakurai e Rodrigo Cascarrolho

47

Associao x Dependncia
A diferena bsica entre ambos:
Associao temos um atributo da classe relacionada.
Dependncia utilizamos a classe relacionada, para passar um
parmetro, chamar um mtodo, criar um objeto, etc.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

48

Associao x Dependncia
Exemplo:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

49

Classe Abstrata
Utilizado para informar que uma classe no implementa
todos os seus mtodos.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

50

Herana
Utilizamos herana quando queremos declarar
subclasses, permitindo reutilizar os cdigos j
declarados na superclasse.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

51

Interface
Utilizamos interface para definir as operaes bsicas
que uma classe de seu tipo precisa implementar.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

52

Interface
Exemplo:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

53

Pacote
Utilizamos para organizar as classes:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

54

Template
uma classe parametrizada para definir conjuntos
fortemente tipados.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

55

Enumeration
Utilizado para criar um conjunto fixo de valores:

Rafael Guimares Sakurai e Rodrigo Cascarrolho

56

Exemplo prtico
Crie um diagrama de classe em UML para o Sistema de
Envio de Produtos:
O sistema deve controlar a ordenao do envio dos produtos
por preo ou por endereo do cliente. De acordo com a
quantidade de produtos, tambm precisamos alocar um veiculo
que pode ser uma Van ou uma Caminhonete.
Tambm precisamos controlar o status do envio que pode ser,
aguardando pagamento, buscando em estoque, sada para
entrega ou entregue.

Rafael Guimares Sakurai e Rodrigo Cascarrolho

57

Resposta exemplo prtico

Rafael Guimares Sakurai e Rodrigo Cascarrolho

58

O que colocar no diagrama de classes


Concentre-se nas reas principais do sistema.
O necessrio para que as pessoas envolvidas possam
entender.
Mantenha as notaes simples.
Gere um diagrama de classe flexvel, facilitando futuras
atualizaes.
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 Guimares Sakurai e Rodrigo Cascarrolho

59

O que no colocar no diagrama de classes


Para no aumentar a complexidade de um diagrama de
classes, normalmente no adicionamos no diagrama:
Classes que representam telas.
Classes de conexo e acesso ao banco de dados.
Classes de APIs da linguagem ou de terceiros.

No tente usar todas as notaes disponveis no mesmo


diagrama.
No desenhe modelos para tudo, a menos que seja
realmente necessrio.

Rafael Guimares 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/ptbr/visio/default.aspx
Poseidon - http://www.gentleware.com
Enterprise Architect - http://www.sparxsystems.com.au/

Rafael Guimares Sakurai e Rodrigo Cascarrolho

61

Adicionando o plug-in de UML no NetBeans


No menu Ferramentas Plug-ins
Selecione em Plug-ins disponveis UML

Rafael Guimares Sakurai e Rodrigo Cascarrolho

62

Certificaes UML
OCUP OMG Certified UML Professional

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

Rafael Guimares Sakurai e Rodrigo Cascarrolho

63

Referencia bibliografica
[Booch, Rumbaugh e Jacobson, I.]
Grandy Booch, James Rumbaugh e Ivar Jacobson, UML: Guia do Usurio,
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]
Caque Cardoso, UML na prtica: do problema ao sistema, Ed. Cincia
Moderna, 2003

UML - http://www.uml.org
Wikipdia http://www.wikipedia.org
Rafael Guimares Sakurai e Rodrigo Cascarrolho

64

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

Rafael Guimares Sakurai e Rodrigo Cascarrolho

65

You might also like