Projeto de Software e Arquitetura Alexandre Monteiro.
-
Upload
lucas-gabriel-escobar-olivares -
Category
Documents
-
view
239 -
download
3
Transcript of Projeto de Software e Arquitetura Alexandre Monteiro.
Projeto de Software e Arquitetura
Alexandre Monteiro
2
Roteiro Contexto Projeto Refinando o modelo de análise
Classes Arquitetura Pacotes
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
4
Contexto
Requisitos Análise Projeto
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
6
Atividades - Projeto Refinar o modelo de classes Projetar arquitetura
Camadas Separação em pacotes
Projetar Banco de Dados
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
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
9
Exemplo – Análise adicionar aluno
Alunonomeemailloginsenha
Aluno()
<<entity>>
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
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()
Alunonome : Stringemail : Stringlogin : Stringsenha : String
Aluno()
Usuariologin : Stringsenha : String
Emailassunto : Stringremetente : Stringdestinatario : Stringcorpo : String
Email()
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
12
Exemplo – diagrama melhorado
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()
13
Refinar o modelo de classes Identificar padrões de projeto
Fachada Revisar as classes
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
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
16
Projetar Arquitetura Por que dividir em camadas?
Aumentar modularidade Diminuir dependências Facilitar possível troca de camadas
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
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
19
Pacotes
CadastroUsuarios
checar()CadastroUsuarios()
(from dados)CadastroAlunos
adicionarAluno()CadastroAlunos()
(from dados)
ComunicacaoServidorEmail
enviarEmail()ComunicacaoServidorEmail()
(from comunicacao)
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
20
Pacotes
gui
negocio dadoscomunicacao
21
Referências The Unified Software Development
Process - Jacobson, Rumbaugh, Booch
The UML Reference Manual - Rumbaugh, Jacobson, Booch