Escolar Documentos
Profissional Documentos
Cultura Documentos
Contexto
Após a etapa de análise de requisitos,
temos documentos de requisitos e os
casos de uso em mãos.
Queremos agora gerar um primeiro
modelo do sistema a partir dos casos
de uso.
Este modelo é chamado de modelo de
análise.
2009
15/03/2005 MDS - Bacalá 2/28
2
Contexto
2009
15/03/2005 MDS - Bacalá 3/28
3
Atividade de Análise
Vai proporcionar um método que
permita que criemos um modelo de
classes do sistema a partir dos casos
de uso
Trará a resposta para a pergunta:
Quais classes preciso para implementar
estes casos de uso?
2009
15/03/2005 MDS - Bacalá 4/28
4
Análise & RUP
A maneira como vamos realizar a
etapa de análise se baseia no
processo do RUP (Rational Unified
Process)
A análise será orientada a casos de
uso, ou seja, os casos de uso servirão
de guia para a etapa de análise
2009
15/03/2005 MDS - Bacalá 5/28
5
Casos de Uso X Análise
casos de uso análise
Descritos na linguagem Descrito na linguagem
do cliente dos desenvolvedores
Visão externa do Visão interna do sistema
sistema
Captura as Mostra, de modo
funcionalidades do abstrato, como a
sistema funcionalidade pode ser
realizada
Estruturado por casos Estruturado por classes
de uso e pacotes
2009
15/03/2005 MDS - Bacalá 6/28
6
Análise & Projeto
Os objetivos do fluxo:
Modelo de análise
e projeto
Modelo de caso
de uso
Análise e Documento da
arquitetura
projeto
Modelo de dados
Glossário Documento
requisitos
Diagrama de
Atividades
Simplificando/Instanciando o
processo para um contexto
específico
Motivação
O RUP é um Framework
Genérico e complexo demais, pois visa
atender todos os tipos de projetos de
desenvolvimento de software
2009
15/03/2005 MDS - Bacalá 27/28
27
Fluxo de atividades simplificado
1. Analisar Arquitetura
3. Projetar Classes
Módulo de Vendas
Módulo de
Interface Gráfica Estoque
Negócio Socket
Dados
Categorização temporária
São convertidas para classes de projeto
Servem para diminuir o gap entre os requisitos e projeto
2009
15/03/2005 MDS - Bacalá 41/28
41
Classes de Fronteira
Itermediam a interface para qualquer
coisa externa ao sistema
Exemplos de classes fronteira <<boundary>>
GUI
Interface com outros sistemas
Interface com dispositivos
Uma classe de Fronteira por interação
ator X caso de uso
Notação em UML
<<control>>
<<boundary>>
Usuário
<<boundary>>
<<entity>> <<entity>>
Matricular-se
Estudante Em disciplina Sistema
Academico
<<boundary>> <<boundary>>
FormRegistroCursos SistemaAcademico
<<entity>>
Glossário
<<entity>>
<<entity>>
Descrição do
Caso de uso
<<control>>
<<boundary>>
Usuário
<<boundary>>
<<entity>> <<entity>>
<<entity>> <<entity>>
Estudante Curso
<<entity>>
Horario
2009
15/03/2005 MDS - Bacalá 49/28
49
Classes de Controle
Coordenam o comportamento (lógica
de controle) do caso de uso
Interface entre fronteira e entidade
<<control>>
<<control>>
<<boundary>>
Usuário
<<boundary>>
<<entity>> <<entity>>
Matricular-se
Estudante Em disciplina Sistema
Academico
<<control>>
ControladorMatricula
matricurlarAluno()
efetuar login
Usuario
registrar súmulas
adicionar turma das aulas
remover turma
Professor
Secretária registrar faltas
Aluno
editar turma
consultar freqüência
2009
15/03/2005 MDS - Bacalá 53/28
53
Exemplo
Efetuar Login
Fluxo de eventos:
1. Usuário informa login e senha
2. Sistema checa se o login e senha
conferem
3. Sistema registra a sessão do aluno e
a tela principal do sistema é exibida
2009
15/03/2005 MDS - Bacalá 54/28
54
Exemplo
Que classes preciso criar?
uma classe de fronteira para lidar com a
interação dos atores com o sistema
uma classe de entidade para representar
as informações relevantes do aluno
uma classe de controle para gerenciar o
fluxo de execução do caso de uso
2009
15/03/2005 MDS - Bacalá 55/28
55
Exemplo
2009
15/03/2005 MDS - Bacalá 56/28
56
Persistência
Mas caso alguma classe de entidade
precise ser persistente?
Que classe será responsável por
realizar as tarefas de persistência?
Para cada classe de entidade que
precise ser persistente, é criada uma
nova classe com o estereótipo
<<entity collection>>
2009
15/03/2005 MDS - Bacalá 57/28
57
Exemplo
<<boundary>> <<control>>
TelaLogin ControladorLogin
2009
15/03/2005 MDS - Bacalá 58/28
58
Passo 2: Distribuir
comportamento
Para cada fluxo de eventos
Identificar classes de análise
participantes
Alocar responsabilidades do caso de uso
às classes de análise
Modelar interações entre as classes
através dos diagramas de interação
Classes de análise
:Cliente :Fornecedor
Linha da vida Mensagem
reflexiva
1: Solicita serviço
Foco do
controle Numeração
2009 MDS - Bacalá hierárquica65
Exemplo de diagrama de
Seqüência
1: preenche info
2: submete
4: ad(Jose)
5: curso aberto?
6: ad(Jose)
Objetos
:Cliente :Fornecedor
1: Solicita serviço
Ligação Mensagem
3: adiciona curso
: Secretaria
curso : gerenciador :
Curso GerenciadorCurriculo
4: novo curso
2009 MDS - Bacalá 68
Exemplo
: CadastroAlunos
: usuário : TelaLogin : ControladorLogin
efetuarLogin(login, senha)
efetuarLogin(login, senha)
checar(login, senha)
registrarSessao()
2009
15/03/2005 MDS - Bacalá 69/28
69
Colaboração X Sequência
Colaboração Sequência
Mostra os Mostra a sequência
relacionamentos, explicíta de
além das interações mensagens
Melhor para Melhor para
visualizar a visualizar o fluxo
colaboração Melhor para
Melhor de ser cenários complexos
usado em reuniões
diagrama de Fornecedor
classe
// Executar responsabilidade
<<boundary>> <<control>>
TelaLogin ControladorLogin
<<entity collection>>
CadastroUsuarios <<entity>>
Usuario
checar(login, senha)
2009
15/03/2005 MDS - Bacalá 73/28
73
Passo 4: Descrever atributos e
associações
Definir atributos
2009
15/03/2005 MDS - Bacalá 75/28
75
Encontrando Atributos
Possíveis fontes: conhecimento do negócio,
requisitos, glossário, modelo do negócio, etc.
2009
15/03/2005 MDS - Bacalá 77/28
77
Encontrando Relacionamentos
Link
Client Supplier
Association
2009
15/03/2005 MDS - Bacalá 80/28
80
Gerenciando a consistência
Classes com responsabilidades similares
são candidatas a serem combinadas
Estudante Persistente
… … …
Diagramas de Classe
JDBC
Curso BD Relacional
Serialização
Candidato Arquivo
:Cliente :Fornecedor
// Realizar alguma operação
Análise
Projeto
:Cliente :Fornecedor
fazerAlgo()
Evento(args)
Nome do estado [condição]
/ Operacao(args)
Variavel: Tipo = valor ^obj.enviarMensagem(args)
Estado
Ação de entrada
Ação de saída Ações
Atividade
Atividades Transição
2009 MDS - Bacalá 96
Exemplo de diagrama de
estado
Cancela
Cancela [ contador = 10 ]
Cancelado
do: Notifica Alunos
Fechado
Cancela do: Finaliza curso