Você está na página 1de 70

Engenharia de Software II

UML
Prof. Yulle Gustavo
E-mail Yulle.Gustavo@ifpa.edu.br
O que é UML

História

Cronograma Diagramas UML


de hoje
Diagrama de Caso de Uso

Diagrama de Classes

Ferramentas de Modelagem

Certificação

Bibliografia
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?

3
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”

4
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

5
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

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

7
UML – Diagrama de Caso de Uso

“Documento narrativo que descreve a sequência de


eventos de um ator que usa um sistema para
complementar 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.

8
Ator

• Humano ou entidade.
• Interage com o sistema.
• Iniciam o sistema.
• Fornecem dados.
• Usam as informações do sistema.

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

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

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

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

13
Diagrama de
Caso de Uso
• Exemplo de Caso de Uso para sacar dinheiro

14
Criando um diagrama
de Caso de Uso
• No item Diagramas -> Novo -> Diagrama...

• Selecione a opção Diagrama de Caso de Uso

15
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

16
Exemplo Prático

• Sistema de Pagamento de Serviços, realizar pagamento


de serviços

17
Resposta do
exemplo prático

• Sistema de Pagamento de Serviços, realizar pesquisa


de serviços

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

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

20
UML – Diagrama de Classes

21
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:

22
Atributos

• Um atributo é formado por:


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

23
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

24
Visibilidade

• Podemos definir as seguintes visibilidades em


atributos e operações:

- private
~ default
# protected
+ public

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

26
Comentário

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


mais informações ao diagrama.

27
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:

28
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).

29
Associação
• Relacionamento simples entre duas classes:

30
Agregação

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


não de forma exclusiva.

31
Composição

• Informa que uma classe faz parte de outra classe de


forma exclusiva.

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

33
Classe de associação
• Utilizamos para realizar o relacionamento entre duas
classes:

• ou

34
Associação

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


classe:

35
Navegabilidade

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

36
Multiplicidade

ü A multiplicidade nada mais é do que os limites


inferior e superior da quantidade de objetos aos
quais outro objeto está associado.
ü Esses limites podem receber os valores:
ü apenas um;
ü zero ou muitos;
ü um ou muitos;
ü zero ou um;
ü ou até um intervalo específico.
Multiplicidade

ü Na uml, as associações permitem representar essa


informação nos extremos da sua linha.

ü Nos relacionamentos, os limites superiores (ou máximos)


representam a sua multiplicidade.

ü Assim, cabe as nomenclaturas para os casos a seguir:


Multiplicidade
Nesse primeiro exemplo, uma pessoa pode possuir 0 ou
no máximo 1 cpf e um Cpf pode ser tido por somente 1
pessoa, portanto nesse caso o relacionamento é de Um
para Um (observando os máximos).
Multiplicidade

► Um para Muitos
Multiplicidade

Nesse segundo exemplo um cliente pode possuir zero ou


muitas contas e a Conta pode pertencer a somente 1
pessoa, portanto nesse caso o relacionamento é de Um
para Muitos (observe os máximos).
Multiplicidade

► Muitos para Muitos


Multiplicidade

Nesse último exemplo temos um Profissional que pode


trabalhar em zero ou muitos projetos e um Projeto que
pode ter zero ou muitos Profissionais trabalhando,
portanto nesse caso o relacionamento é de Muitos para
Muitos.
PERGUNTA
• A multiplicidade é utilizada para definir a quantidade de
objetos que devem ser criados, certo?
1 .. 1 (zero ou um) ?
2 (um) ?
* (zero ou muitos) ?

O que esse diagrama que dizer?

44
Criando um diagrama de
Classes
• No item Diagramas -> Novo -> Diagrama...

• Selecione a opção Diagrama de Caso de Uso

46
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

47
Exemplo

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

Inicio Pedido Pagamento Entrega Fim

48
Resposta exemplo prático

49
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.
ü Está visita deverá ser realizada em hora e local
definido pelo cliente para poder lhe entregar os
produtos que foram comprados em nossa loja.

50
Resposta exemplo prático

51
Dependência

• Utilizado para informar que uma classe depende de


outra classe para executar alguma operação:

52
Dependência
• Palavras - chave de dependência:
<<call>>
<<create>>
<<dependency>>
<<use>>

Uso «use», «call», «create», Indica que um elemento


«instantiate» ou «send» de modelo requer outro
elemento de modelo
para sua
implementação ou
operação completa

53
Em um aplicativo de e-commerce, uma classe Cart depende de
uma classe Product porque a primeira utiliza a segunda como um
parâmetro para uma operação de inclusão.

Em um diagrama de classe, um relacionamento de dependência


aponta da classe Cart para a classe Product.

Como a seguinte figura ilustra, a classe Cart é, portanto, o cliente e


a classe Product o fornecedor.

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

55
Associação x Dependência

• Exemplo:

56
Classe Abstrata

• Utilizado para informar que uma classe não implementa


todos os seus métodos.

57
Herança

• Utilizamos herança quando queremos declarar


subclasses, permitindo reutilizar os códigos já
declarados na superclasse.

58
Interface

• Utilizamos interface para definir as operações básicas


que uma classe de seu tipo precisa implementar.

59
Interface

• Exemplo:

60
Pacote

• Utilizamos para organizar as classes:

61
Template

• É uma classe parametrizada para definir conjuntos


fortemente tipados.

62
Enumeration

• Utilizado para criar um conjunto fixo de valores:

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

64
Resposta exemplo prático

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

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

67
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/

68
Adicionando o plug-in de
UML no NetBeans
• No menu Ferramentas → Plug-ins
– Selecione em Plug-ins disponíveis → UML

69
Certificações UML

• OCUP – OMG Certified UML Professional

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

70
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

71

Você também pode gostar