Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

21
Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br

Transcript of Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

Page 1: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

Projeto

Rafael DuarteAlexandre Mota

[rmd, acm]@cin.ufpe.br

Page 2: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 2

Roteiro Contexto Projeto Refinando o modelo de análise

Classes Arquitetura Pacotes

Page 3: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 3

Contexto 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 4: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 4

Contexto

Requisitos Análise Projeto

Page 5: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 5

Análise X Projeto 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 6: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 6

Atividades - Projeto Refinar o modelo de classes Projetar arquitetura

Camadas Separação em pacotes

Projetar Banco de Dados

Page 7: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 7

Refinar o modelo de classes 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 8: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 8

Exemplo – Análise login

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 9: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 9

Exemplo – Análise adicionar aluno

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 10: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 10

Exemplo – diagrama único

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

Emailassunto : Stringremetente : Stringdestinatario : Stringcorpo : String

Email()

Page 11: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 11

Refinar o modelo de classes 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 12: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 12

Exemplo – diagrama melhoradoTelaLogin

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 13: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 13

Refinar o modelo de classes Identificar padrões de projeto

Fachada Revisar as classes

Page 14: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 14

Padrões

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 15: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 15

Projetar arquitetura 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 16: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 16

Projetar Arquitetura Por que dividir em camadas?

Aumentar modularidade Diminuir dependências Facilitar possível troca de camadas

Page 17: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 17

Camadas

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

Page 18: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 18

Divisão do sistema em pacotes 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 19: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 19

Pacotes

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 20: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 20

Pacotes

gui

negocio dadoscomunicacao

Page 21: Projeto Rafael Duarte Alexandre Mota [rmd, acm]@cin.ufpe.br.

09/12/2004 21

Referências The Unified Software Development

Process - Jacobson, Rumbaugh, Booch The UML Reference Manual -

Rumbaugh, Jacobson, Booch