49
Tarciane Andrade [email protected]

Tarciane Andrade [email protected]. Contexto Análise Passando de casos de uso para diagramas de classes 2

Embed Size (px)

Citation preview

Page 1: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Tarciane [email protected]

Page 2: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Contexto Análise Passando de casos de uso para diagramas

de classes

22

Page 3: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

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.

33

Page 4: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

44

Requisitos Análise Projeto

ARQUITETURAARQUITETURA

Page 5: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

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?

55

Page 6: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

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

66

Page 7: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

casos de uso análise Descritos na linguagem do cliente

Descrito na linguagem dos desenvolvedores

Visão externa do sistema

Visão interna do sistema

Captura as funcionalidades do sistema

Mostra, de modo abstrato, como a funcionalidade pode ser realizada

Estruturado por casos de uso

Estruturado por classes e pacotes

77

Page 8: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Identificar as classes◦ Identificar persistência

Identificar responsabilidades das classes Identificar relacionamentos Identificar atributos

88

Page 9: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

No primeiro passo de análise, identificaremos três tipos de classes:◦ Fronteira ◦ Entidade◦ Controle

Tais classes são identificadas separadamente para cada caso de uso

99

Page 10: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Utilizada para modelar a interação entre um ator e o sistema

Para cada interação entre um ator e caso de uso, é criada uma classe de fronteira

Possuem o estereótipo <<boundary>>

1010

Page 11: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Utilizadas para modelar a informação manipulada pelo sistema

Podem ser persistentes ou não São identificadas a partir do fluxo de

eventos do caso de uso Possuem o estereótipo <<entity>>

1111

Page 12: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Classes responsáveis por controlar o fluxo de execução do caso de uso

Normalmente é criada uma classe de controle para cada caso de uso

Possuem o estereótipo <<control>>

1212

Page 13: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

registrar faltas

registrar súmulasdas aulas

Professor

consultar freqüência

Aluno

editar alunos remover alunos

adicionar turma

remover turma

editar turma

Servidor de e-mailadicionar alunos

Secretária

Usuarioefetuar login

1313

Page 14: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Efetuar Login Fluxo de eventos:1. Usuário informa login e senha2. Sistema checa se o login e senha conferem3. Sistema registra a informações do aluno e

a tela principal do sistema é exibida

1414

Page 15: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

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

1515

Page 16: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

1616

ControladorLogin UsuarioTelaLogin

ControladorLogin<<control>>

Usuario<<entity>>

TelaLogin<<boundary>>

Há diferentes opções de visualização dos estereótipos. A opção padrão é mostrada acima - os estereótipos são visualizados através da mudança dos ícones das classes. Há também a opção de se visualizar os estereótipos do modo convencional (<<estereótipo>>).

Page 17: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Após a identificação das classes, é necessário descobrir quais são as responsabilidades de cada classe, o que cada uma precisa fazer.

Os diagramas de interação (seqüência e colaboração) são muito úteis nesta tarefa

1717

Page 18: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

1818

: usuário : TelaLogin : ControladorLogin : CadastroAlunos

efetuarLogin(login, senha)

efetuarLogin(login, senha)

checar(login, senha)

registrarSessao()

Page 19: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Após identificarmos as responsabilidades (métodos) pelos diagramas de interação, devemos acrescentar os métodos nas classes previamente identificadas (1º passo)

1919

Page 20: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

2020

TelaLogin

efetuarLogin(login, senha)

<<boundary>>ControladorLogin

efetuarLogin(login, senha)registrarSessao()

<<control>>

Usuario<<entity>>

Page 21: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

As classes identificadas não funcionam isoladamente, elas se relacionam com as demais classes

Os diagramas de interação são muito úteis nesta tarefa

Para cada ligação presente nos diagramas de interação, é necessário um relacionamento no diagrama de classes

2121

Page 22: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

2222

Usuario<<entity>>

TelaLogin

efetuarLogin(login, senha)

<<boundary>> ControladorLogin

efetuarLogin(login, senha)registrarSessao()

<<control>>

1*

CadastroUsuarios

checar(login, senha)

<<entity collection>> 1

1

* 1

1

1

Page 23: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Também é necessário identificar quais os atributos das classes

Um bom conhecimento do domínio do problema é bastante importante para esta tarefa, principalmente na identificação de atributos das classes de entidade

Nesta etapa ainda não precisamos indicar quais os tipos dos atributos

2323

Page 24: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Usuariologinsenha

<<entity>>

TelaLogin

efetuarLogin(login, senha)

<<boundary>> ControladorLogin

efetuarLogin(login, senha)registrarSessao()

<<control>>

1*

CadastroUsuarios

checar(login, senha)

<<entity collection>> 1

1

* 1

1

1

2424

Page 25: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

Secretária Servidor de e-mailadicionar alunos

2525

Fluxo de eventos:1. Secretária informa dados do aluno2. Secretária seleciona a opção “confirmar cadastro”3. Sistema checa se os dados são válidos4. Sistema adiciona o aluno à base de dados5. Sistema envia um e-mail para o aluno, informando-o seu login e senha6. Sistema exibe uma mensagem de confirmação de cadastro

Identificar as classes do caso de uso “adicionar aluno”

Page 26: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

2626

Alunonomeemailloginsenha

Aluno()

<<entity>>

Email

Email()

<<entity>>TelaAdicionarAluno

adicionarAluno()

<<boundary>>

CadastroAlunos

adicionarAluno()

<<entity collection>>ControladorAdicionarAluno

adicionarAluno()

<<control>>1

1..*

11

ComunicacaoServidorEmail

enviarEmail()

<<boundary>>

1 1

1..*

1

1 1 11

Page 27: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

2727

Tarciane [email protected]

Page 28: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

2828

Contexto Projeto Refinando o modelo de análise

◦ Classes◦ Arquitetura◦ Pacotes

Page 29: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

2929

Após a etapa de análise temos um primeiro modelo do sistema

Queremos agora melhorar esse modelo, a ponto de gerarmos facilmente a implementação do sistema

Este modelo é chamado de modelo de Projeto

Page 30: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3030

Requisitos Análise Projeto

Page 31: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3131

Abstrato X Concreto Independente X dependente da tecnologia

de implementação Simples X detalhado Modelos por caso de uso X unificação em

um único modelo

Page 32: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3232

Refinar o modelo de classes Projetar arquitetura

◦ Camadas◦ Separação em pacotes

Projetar Banco de Dados

Page 33: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3333

Juntar todas as classes em um só diagrama Analisar se é necessário criar novas classes

ou remover classes existentes Eliminar os estereótipos de análise Adicionar modificadores de visibilidade aos

métodos e atributos Definir os tipos dos atributos

Page 34: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3434

Usuariologinsenha

<<entity>>

TelaLogin

efetuarLogin(login, senha)

<<boundary>>

CadastroUsuarios

checar(login, senha)

<<entity collection>>

ControladorLogin

efetuarLogin(login, senha)registrarSessao()

<<control>>

1* 1*

1

1

1

1

Page 35: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3535

Alunonomeemailloginsenha

Aluno()

<<entity>>

Email

Email()

<<entity>>TelaAdicionarAluno

adicionarAluno()

<<boundary>>

CadastroAlunos

adicionarAluno()

<<entity collection>>ControladorAdicionarAluno

adicionarAluno()

<<control>>1

1..*

11

ComunicacaoServidorEmail

enviarEmail()

<<boundary>>

1 1

1..*

1

1 1 11

Page 36: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3636

TelaLogin

efetuarLogin()

TelaAdicionarAluno

adicionarAluno()

CadastroUsuarios

checar()

ControladorLogin

efetuarLogin()registrarSessao()

*

1

*

1

1

1

1

1CadastroAlunos

adicionarAluno()

ComunicacaoServidorEmail

enviarEmail()

ControladorAdicionarAluno

adicionarAluno()

1..*

1

1..*

1

1

1

1

1

11 11

Email

Email()

Alunonome : Stringemail : Stringlogin : Stringsenha : String

Aluno()

Usuariologin : Stringsenha : String

Page 37: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3737

Detalhar assinatura dos métodos◦ definir todos os parâmetros dos métodos, seu

tipos e o tipo de retorno dos métodos Mapear associações em atributos Analisar a possibilidade de utilizar herança

Page 38: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3838

TelaLogin

efetuarLogin()TelaLogin()

ControladorLogin

efetuarLogin()registrarSessao()ControladorLogin()

*

1

*

1

CadastroUsuarios

checar()CadastroUsuarios()

1

1

1

1

TelaAdicionarAluno

adicionarAluno()TelaAdicionarAluno()

CadastroAlunos

adicionarAluno()CadastroAlunos()

ControladorAdicionarAluno

adicionarAluno()ControladorAdicionarAluno()

1..*

1

1..*

1

1

1

1

1

ComunicacaoServidorEmail

enviarEmail()ComunicacaoServidorEmail()

11 11

Emailassunto : Stringremetente : Stringdestinatario : Stringcorpo : String

Email()

Alunonome : Stringemail : String

Aluno()

Usuariologin : Stringsenha : String

Usuario()

Page 39: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

3939

Identificar padrões de projeto◦ Ex: Fachada

Revisar as classes

Page 40: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4040

CadastroUsuarios

checar()CadastroUsuarios()

CadastroAlunos

adicionarAluno()CadastroAlunos()

ComunicacaoServidorEmail

enviarEmail()ComunicacaoServidorEmail()

Emailassunto : Stringremetente : Stringdestinatario : Stringcorpo : String

Email()

Alunonome : Stringemail : String

Aluno()

Usuariologin : Stringsenha : String

Usuario()

TelaAdicionarAluno

adicionarAluno()TelaAdicionarAluno()

TelaLogin

efetuarLogin()TelaLogin()

ControladorAdicionarAluno

adicionarAluno()ControladorAdicionarAluno()

1

1

1

1

1

1

1

1

Fachada

adicionarAluno()efetuarLogin()

<<singleton>>

1

1..*

1

1..*

1

1

ControladorLogin

efetuarLogin()registrarSessao()ControladorLogin()

1

1

1

1

1

1

1 1

1..* 1..*

1 1

1 1

FachadaSingleton

Page 41: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4141

Dividir o sistema em camadas Arquitetura bem comum:

Apresentação

Negócio

Dados

Interface com o usuário

Regras de negócio inerentesà aplicação

Código relacionado ao mecanismode persistência utilizado

ComunicaçãoComunicação entre

apresentação e negócio e com outros sistemas

Page 42: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4242

Por que dividir em camadas?◦ Aumentar modularidade◦ Diminuir dependências◦ Facilitar possível troca de camadas

Page 43: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4343

CadastroUsuarios

checar()CadastroUsuarios()

CadastroAlunos

adicionarAluno()CadastroAlunos()

ComunicacaoServidorEmail

enviarEmail()ComunicacaoServidorEmail()

Emailassunto : Stringremetente : Stringdestinatario : Stringcorpo : String

Email()

Alunonome : Stringemail : String

Aluno()

Usuariologin : Stringsenha : String

Usuario()

TelaAdicionarAluno

adicionarAluno()TelaAdicionarAluno()

TelaLogin

efetuarLogin()TelaLogin()

ControladorAdicionarAluno

adicionarAluno()ControladorAdicionarAluno()

1

1

1

1

11 11

Fachada

adicionarAluno()efetuarLogin()

<<singleton>>

1

1..*

1

1..*

1

1

ControladorLogin

efetuarLogin()registrarSessao()ControladorLogin()

1

1

1

1

1

1

11

1..*1..*

1 1

11Comunicação

Dados

Apresentação

Negócio

Comunicação

Page 44: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4444

Agrupar classes em pacotes Possíveis critérios:

◦ Camadas◦ Lógica do sistema

Critérios escolhidos devem minimizar a dependência entre os pacotes

Criar um diagrama de pacotes indicando as dependências entre os pacotes

Page 45: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4545

CadastroUsuarios

checar()CadastroUsuarios()

(from dados)CadastroAlunos

adicionarAluno()CadastroAlunos()

(from dados)

ComunicacaoServidorEmail

enviarEmail()ComunicacaoServidorEmail()

(from comunicacao)

Email

assunto : Stringremetente : Stringdestinatario : Stringcorpo : String

Email()

(from negocio)Aluno

nome : Stringemail : String

Aluno()

(from negocio)

Usuario

login : Stringsenha : String

Usuario()

(from negocio)

TelaAdicionarAluno

adicionarAluno()TelaAdicionarAluno()

(from gui)TelaLogin

efetuarLogin()TelaLogin()

(from gui)

ControladorAdicionarAluno

adicionarAluno()ControladorAdicionarAluno()

(from negocio)

1

1

1

1

11 11

Fachada

adicionarAluno()efetuarLogin()

(from negocio)

<<singleton>>

1

1..*

1

1..*

1

1

ControladorLogin

efetuarLogin()registrarSessao()ControladorLogin()

(from negocio)

1

1

1

1

1

1

11

1..*1..*

1 1

11

Indicação do pacoteda classe

Page 46: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4646

gui

negocio dadoscomunicacao

Page 47: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4747

Divisão em grupos; Elaborar o diagrama de análise, projeto e

pacote para o caso de uso Registrar Faltas.

Page 48: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

4848

Caso de Uso Registrar Faltas Pré-Condição: aulas realizadas

cadastradas;◦ Este caso de uso se inicia quando o professor

entra no sistema;◦ O professor escolhe a turma de alunos;◦ O professor escolhe o aluno para cadastrar as

faltas;◦ Para cada aula realizada, o professor informa se

o aluno estava presente ou se faltou a aula;◦ O caso de uso se encerra;

Page 49: Tarciane Andrade tarcianeandrade@gmail.com.  Contexto  Análise  Passando de casos de uso para diagramas de classes 2

The Unified Software Development Process - Jacobson, Rumbaugh, Booch

The UML Reference Manual - Rumbaugh, Jacobson, Booch

Vasconcelos, Alexandre. Disciplina de Engenharia de Software, UFPE.

SWEBOK, 2004.

4949