Você está na página 1de 22

Projeto de Arquitetura de

Software

Alexandre Monteiro

Roteiro

Contexto
Projeto
Refinando o modelo de anlise

Classes
Arquitetura
Pacotes

Contexto

Aps a etapa de anlise temos um


primeiro modelo do sistema
Queremos agora melhorar esse
modelo, a ponto de gerarmos
facilmente a implementao do
sistema
Este modelo chamado de modelo
de Projeto
3

Contexto
Requisitos

Anlise

Projeto

Anlise X Projeto

Abstrato X Concreto
Independente X dependente da
tecnologia de implementao
Simples X detalhado
Modelos por caso de uso X
unificao em um nico modelo

Atividades - Projeto

Refinar o modelo de classes


Projetar arquitetura

Camadas
Separao em pacotes

Projetar Banco de Dados

Refinar o modelo de
classes

Juntar todas as classes em um s


diagrama
Analisar se necessrio criar novas
classes ou remover classes existentes
Eliminar os esteretipos de anlise
Adicionar modificadores de
visibilidade aos mtodos e atributos
Definir os tipos dos atributos
7

Exemplo Anlise login


<<control>>
ControladorLogin

<<boundary>>
TelaLogin
efetuarLogin(login, senha)

efetuarLogin(login, senha)
registrarSessao()

1
1

<<entity collection>>
CadastroUsuarios
checar(login, senha)

<<entity>>
Usuario
login
senha

Exemplo Anlise adicionar


aluno
<<entity>>
Email

<<boundary>>
TelaAdicionarAluno

Email()

adicionarAluno()

<<entity>>
Aluno
nome
email
login
senha

1..*

1
<<control>>
ControladorAdicionarAluno

<<boundary>>
ComunicacaoServidorEmail
enviarEmail()

Aluno()

adicionarAluno()

<<entity collection>>
CadastroAlunos
1

adicionarAluno()

Exemplo diagrama nico


Aluno
nome : String
email : String
login : String
senha : String

TelaAdicionarAluno
adicionarAluno()
1..*

Aluno()

TelaLogin
efetuarLogin()
*

1
ControladorAdicionarAluno

ComunicacaoServidorEmail
enviarEmail()

Email
assunto : Email
String
remetente : String
destinatario : String
Email()
corpo : String

adicionarAluno()
1

1
CadastroAlunos
adicionarAluno()

1
ControladorLogin
efetuarLogin()
registrarSessao()
1

Usuario
login : String
senha : String

1
CadastroUsuarios
checar()

Email()

10

Refinar o modelo de
classes

Detalhar assinatura dos mtodos

definir todos os parmetros dos


mtodos, seu tipos e o tipo de retorno
dos mtodos

Mapear associaes em atributos*


Analisar a possibilidade de utilizar
herana
11

Exemplo diagrama
melhorado
Usuario
login : String
senha : String

Aluno
nome : String
email : String

Usuario()

Aluno()

TelaAdicionarAluno
adicionarAluno()
TelaAdicionarAluno()
1..*
1

ComunicacaoServidorEmail
enviarEmail()
1
ComunicacaoServidorEmail()

Email
assunto : String
remetente : String
destinatario : String
corpo : String

ControladorAdicionarAluno
1

adicionarAluno()
ControladorAdicionarAluno()
1

TelaLogin
efetuarLogin()
TelaLogin()
*
1
ControladorLogin
efetuarLogin()
registrarSessao()
ControladorLogin()
1

1
CadastroAlunos

1
CadastroUsuarios

adicionarAluno()
CadastroAlunos()

checar()
CadastroUsuarios()

Email()

12

Refinar o modelo de
classes

Identificar padres de projeto

Fachada

Revisar as classes

13

Padres
Usuario
login : String
senha : String

Aluno
nome : String
email : String

Usuario()

Aluno()

TelaAdicionarAluno

TelaLogin

adicionarAluno()
TelaAdicionarAluno()

efetuarLogin()
TelaLogin()
1..*

1..*
1

1
<<singleton>>
Fachada

ComunicacaoServidorEmail
enviarEmail()
ComunicacaoServidorEmail()

adicionarAluno()
efetuarLogin()

1
Email
assunto : String
remetente : String
destinatario : String
corpo : String
Email()

Fachada
Singleton

1
1

1
1

ControladorAdicionarAluno

ControladorLogin

adicionarAluno()
ControladorAdicionarAluno()
1

efetuarLogin()
registrarSessao()
ControladorLogin()
1

1
CadastroAlunos

1
CadastroUsuarios

adicionarAluno()
CadastroAlunos()

checar()
CadastroUsuarios()

14

Projetar arquitetura

Dividir o sistema em camadas


Arquitetura bem comum:
Apresentao
Comunicao
Negcio
Dados

Interface com o usurio


Comunicao entre apresentao e negcio e com
outros sistemas
Regras de negcio inerentes
aplicao

Cdigo relacionado ao mecanismo


de persistncia utilizado

15

Projetar Arquitetura

Por que dividir em camadas?

Aumentar modularidade
Diminuir dependncias
Facilitar possvel troca de camadas

16

Apresentao

Camadas

TelaLogin
efetuarLogin()
TelaLogin()
1..*

Email
assunto : String
remetente : String
destinatario : String
corpo : String
Email()

enviarEmail()
ComunicacaoServidorEmail()

<<singleton>>
Fachada
adicionarAluno()
efetuarLogin()

Aluno
nome : String
email : String
Aluno()

1
1
1

ComunicacaoServidorEmail

adicionarAluno()
TelaAdicionarAluno()
1..*

Negcio

Comunicao

TelaAdicionarAluno

ControladorAdicionarAluno
adicionarAluno()
ControladorAdicionarAluno()
1

1
ControladorLogin
efetuarLogin()
registrarSessao()
ControladorLogin()
1

1
CadastroAlunos

1
CadastroUsuarios

adicionarAluno()
CadastroAlunos()

checar()
CadastroUsuarios()

Usuario
login : String
senha : String
Usuario()

Dados

17

Viso Geral da Arquitetura

18

Diviso do sistema em
pacotes

Agrupar classes em pacotes


Possveis critrios:

Camadas
Lgica do sistema

Critrios escolhidos devem minimizar


a dependncia entre os pacotes
Criar um diagrama de pacotes
indicando as dependncias entre os
pacotes
19

Pacotes

TelaLogin

TelaAdicionarAluno

(from gui)

(from gui)

efetuarLogin()
TelaLogin()
1..*

adicionarAluno()
TelaAdicionarAluno()
1..*
1

Email

Indicao do pacote
da classe

<<singleton>>
Fachada

(from negocio)

assunto : String
remetente : String
destinatario : String
corpo : String

(from negocio)

1
Email()

(from comuni cacao)

enviarEmail()
ComunicacaoServidorEmail()

ControladorAdicionarAluno
1

adicionarAluno()
efetuarLogin()

Aluno
(from negocio)

nome : String
email : String
Aluno()

1
1

ComunicacaoServidorEmail

(from negocio)

adicionarAluno()
ControladorAdicionarAluno()
1

1
ControladorLogin

Usuario

(from negocio)

(from negocio)

efetuarLogin()
registrarSessao()
ControladorLogin()
1

1
CadastroAlunos

1
CadastroUsuarios

(from dados)

(from dados)

adicionarAluno()
CadastroAlunos()

login : String
senha : String
Usuario()

checar()
CadastroUsuarios()

20

Pacotes
gui

comunicacao

negocio

dados

21

Referncias

The Unified Software Development


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

22