projeto de arquitetura de software alexandre monteiro
TRANSCRIPT
![Page 1: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/1.jpg)
Projeto de Arquitetura de Software
Alexandre Monteiro
![Page 2: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/2.jpg)
2
Roteiro Contexto Projeto Refinando o modelo de análise
Classes Arquitetura Pacotes
![Page 3: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/3.jpg)
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 de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/4.jpg)
4
Contexto
Requisitos Análise Projeto
![Page 5: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/5.jpg)
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 de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/6.jpg)
6
Atividades - Projeto Refinar o modelo de classes Projetar arquitetura
Camadas Separação em pacotes
Projetar Banco de Dados
![Page 7: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/7.jpg)
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 de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/8.jpg)
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 de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/9.jpg)
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
![Page 10: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/10.jpg)
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()
![Page 11: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/11.jpg)
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 de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/12.jpg)
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()
![Page 13: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/13.jpg)
13
Refinar o modelo de classes Identificar padrões de projeto
Fachada Revisar as classes
![Page 14: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/14.jpg)
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 de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/15.jpg)
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ção Comunicação entre apresentação e negócio e com outros sistemas
![Page 16: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/16.jpg)
16
Projetar Arquitetura Por que dividir em camadas?
Aumentar modularidade Diminuir dependências Facilitar possível troca de camadas
![Page 17: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/17.jpg)
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 de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/18.jpg)
18
Visão Geral da Arquitetura
![Page 19: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/19.jpg)
19
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 20: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/20.jpg)
20
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
![Page 21: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/21.jpg)
21
Pacotes
gui
negocio dadoscomunicacao
![Page 22: Projeto de Arquitetura de Software Alexandre Monteiro](https://reader035.vdocuments.com.br/reader035/viewer/2022062411/5706386b1a28abb82390496f/html5/thumbnails/22.jpg)
22
Referências The Unified Software Development
Process - Jacobson, Rumbaugh, Booch
The UML Reference Manual - Rumbaugh, Jacobson, Booch