Buscar

criando diagramas de classe e de uso de forma eficiente

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
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais