• Nenhum resultado encontrado

Projeto de Software e Arquitetura

N/A
N/A
Protected

Academic year: 2022

Share "Projeto de Software e Arquitetura"

Copied!
21
0
0

Texto

(1)

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

Usuario login senha

<<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

Aluno nome email login senha Aluno()

<<entity>>

Email Email()

<<entity>>

TelaAdicionarAluno adicionarAluno()

<<boundary>>

CadastroAlunos adicionarAluno()

<<entity collection>>

ControladorAdicionarAluno adicionarAluno()

<<control>>

1 1..*

1 1

ComunicacaoServidorEmail enviarEmail()

<<boundary>>

1 1

1..*

1

1 1 1 1

(10)

Exemplo – diagrama único

TelaLogin efetuarLogin() TelaAdicionarAluno

adicionarAluno()

ControladorLogin efetuarLogin() registrarSessao()

*

1

*

1

1

1 1

CadastroAlunos 1 ComunicacaoServidorEmail

enviarEmail()

ControladorAdicionarAluno adicionarAluno()

1..*

1 1..*

1

1

1 1

1 1

1 1

1

Email Aluno nome : String email : String login : String senha : String Aluno()

Usuario login : String senha : String

Email assunto : String

(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 1

1 1

1 TelaAdicionarAluno

adicionarAluno() TelaAdicionarAluno()

CadastroAlunos ControladorAdicionarAluno

adicionarAluno()

ControladorAdicionarAluno() 1..*

1 1..*

1

1

1 1

1 ComunicacaoServidorEmail

enviarEmail()

ComunicacaoServidorEmail() 11 11

Email assunto : String remetente : String destinatario : String

Aluno nome : String email : String Aluno() Usuario

login : String senha : String Usuario()

(13)

Refinar o modelo de classes

 Identificar padrões de projeto

 Fachada

 Revisar as classes

(14)

Padrões

ComunicacaoServidorEmail enviarEmail()

ComunicacaoServidorEmail()

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

Aluno nome : String email : String Aluno() Usuario

login : String senha : 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

Fachada

Singleton

(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 mecanismo de persistência utilizado

Comunicação

Comunicaçã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()

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

Aluno nome : String email : String Aluno()

Usuario login : String senha : String Usuario() TelaAdicionarAluno

adicionarAluno() TelaAdicionarAluno() TelaLogin

efetuarLogin() TelaLogin()

ControladorAdicionarAluno adicionarAluno()

ControladorAdicionarAluno() 1

1 1

1

1 11

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

Comunicação

1

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

(19)

Pacotes

CadastroUsuarios

checar()

CadastroUsuarios()

(from dados)

CadastroAlunos

adicionarAluno() CadastroAlunos()

(from dados)

ComunicacaoServidorEmail

enviarEmail()

ComunicacaoServidorEmail()

(from comunicacao)

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

(from negocio) Aluno

nome : String email : String Aluno()

(from negocio)

Usuario login : String senha : String Usuario()

(from negocio)

TelaAdicionarAluno

adicionarAluno() TelaAdicionarAluno()

(from gui)

TelaLogin

efetuarLogin() TelaLogin()

(from gui)

ControladorAdicionarAluno

adicionarAluno()

ControladorAdicionarAluno()

(from negocio)

1

1 1

1 1

1 1

1

Fachada

adicionarAluno() efetuarLogin()

(from negocio)

<<singleton>>

1 1..*

1 1..*

1

1

ControladorLogin

efetuarLogin() registrarSessao() ControladorLogin()

(from negocio)

1 1 1 1 1 1 1 1

1..* 1..*

1 1

1

1

Indicação do pacote

da classe

(20)

Pacotes

gui

negocio dados

comunicacao

(21)

Referências

 The Unified Software Development

Process - Jacobson, Rumbaugh, Booch

 The UML Reference Manual -

Rumbaugh, Jacobson, Booch

Referências

Documentos relacionados

Um outro sistema robótico do tipo rodas, figura 10, é utilizado para inspecionar e limpar a superfície interna de dutos de concreto (Saenz, Elkmann, Stuerze, Kutzner, &amp;

[Informar a data, o nome e a assinatura do dirigente máximo que aprovou o documento Termo de Abertura do Projeto antes deste projeto ser solicitado ao Governador pelo

Este trabalho teve por objetivo o estudo da dimensão das doenças crônicas, especificamente o diabetes mellitus, visando à elaboração de um modelo de processo

O problema de como garantir a autenticidade do acesso do usuário de sites de ensino à distância levou a uma busca de soluções que pudessem atender as exigências

O objetivo principal desta pesquisa foi discutir e propor um processo para criação de uma DSSA. O trabalho teve ainda outros objetivos específicos: apresentar uma arquitetura de

(2005), o preço estabilizado passou a ser um referencial de comparação entre alternativas e permitiu associar-se o conceito de valor como diferencial entre produtos similares.

● Arquiteturas de software são especificadas através de uma ou mais de suas visões.. Três

• Roles são especificações (abstratas ou não) para as portas e