Вы находитесь на странице: 1из 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
3

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

Verso 1.1

Verso 1.3

Verso 1.5

Verso 2.1

Out/1995

Jan/1997

Jun/1998

2001

2005

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

Jun/1996

Nov/1997

Dez/1998

2002

2007

Verso 1.0

Verso 1.2

Verso 1.4

Verso 2.0

Rafael Guimares Sakurai e Rodrigo Cascarrolho

UML - Diagramas
Lista de Diagramas
Diagrama
Classes Componentes Estruturas Compostas Instalao Objetos Pacotes Casos de Uso Atividades Mquinas de Estado Sequncia Comunicao Viso Geral da Interao Sincronismo

Objetivo
Classe, caractersticas e relacionamentos. Estrutura e conexo de componentes. Decomposio de uma classe em tempo de execuo. Distribuio de artefatos nos ns. Exemplo de configuraes de instncias. Estrutura hierrquica em tempo de compilao. Como os usurios interagem com um sistema. Comportamento procedimental e paralelo. Como os eventos alteram um objeto no decorrer de sua vida. Interao entre objetos; nfase na sequncia. Interao entre objetos; nfase nas ligaes. Mistura de diagrama de sequncia e de atividades. Interao entre objetos; nfase no sincronismo.

Grupo Diagrama
Estrutural Estrutural Estrutural Estrutural Estrutural Estrutural Comportamental Comportamental Comportamental Interao Interao Interao 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


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.

Diagrama

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