padrões de arquitetura de...

12
Padrões de Arquitetura de Software Padrões de Arquitetura de Padrões de Arquitetura de Software Software Leandro Tonietto [email protected] http://www.inf.unisinos.br/~ltonietto Unisinos fev-09

Upload: others

Post on 07-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

Padrões de Arquitetura de Software

Padrões de Arquitetura de Padrões de Arquitetura de

SoftwareSoftwareLeandro Tonietto

[email protected]

http://www.inf.unisinos.br/~ltonietto

Unisinos

fev-09

Page 2: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 2

IntroduçãoIntroduIntroduççãoão

Padrões de projeto de software descrevem a criação, estruturação e relacionamento entre classes e objetos, visando, em geral, reuso de código e otimização de recursos de processamento (processador e memória)Padrões de arquitetura de software descrevem padrões recorrentes para arquitetura do sistema. A arquitetura é base na qual o sistema é definido, implica em questões de ambiente e plataforma de execução. Define o ambiente no qual o sistema éexecutado e também na forma de comunicação com outros sistemas.

Page 3: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 3

IntroduçãoIntroduIntroduççãoão

Exemplos de padrão de arquitetura.MVC é um padrão clássico de arquitetura e define uma separação do sistema em Modelo e Visão. Háainda a parte de controle, que faz a comunicação entre as duas anteriores. MVC busca uma maior independência entre M e V.SOA é um padrão de arquitetura que prevê uma externalização padrão do resultado do processamento, uma forma padrão de comunicação (protocolo) que pode ser compreendido por sistemas externos, inclusive.

Page 4: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 4

MVCMVC

Page 5: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 5

Padrão MVCPadrão MVCPadrão MVC

Criado em 1979 por Trygve Reenskaug (Xerox PARC)Model-View-Controller

Model: representa o domínio dos dados. É a parte do modelo: dados, regras e lógica de negócios.View: para de apresentação dos dados; interface.Controller: faz a ligação entre a parte de apresentação e a parte de modelo. Recebe requisições ou chamadas da View e notifica a Model para que mude de estado. Por fim, processa retorno para View.

Padrão de arquitetura de softwareO objetivo do padrão é separar as classes que descrevem o modelo e a lógica de negócios das classes que realizam a interface com o usuário, permitindo que ambas evoluam de forma independente. Com esta separação, é possível conceber uma aplicação que se torne independente da sua apresentação.

Page 6: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 6

Padrão MVCPadrão MVCPadrão MVC

Estrutura básica:

View Controller Model Dados

Camada de apresentação (View) faz requisições por dados ou ações sobre os dados do modelo. O Controller recebe as requisições e repassa para o objeto apropriado da camada de modelo (Model) para atendê-la. Modelo faz as operações sobre os dados e retorna algum tipo de informação ao Controller, que por sua vez devolve informações para exibição na camada de exibição.View faz acesso indireto à Model para apresentação das informações.

Page 7: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 7

Padrão MVCPadrão MVCPadrão MVCExemplo:

Jogo de xadrez on-line (e off-line também!).Imagine que os jogadores podem efetuar jogadas tanto executando um aplicativo com interface gráfica em um computador desktop, quando via website do jogo ou até via celular, utilizando neste caso, uma versão limitada da interface da aplicação.A jogabilidade deve ser executa da mesma forma para cada uma das interfaces possíveis. Neste sentido, um servidor de aplicação (no caso um servidor de xadrez) é quem processa a “jogabilidade”.Inclusive, o servidor processa outras informações relevantes para manter o serviço em funcionamento, como: persistência de informações, cadastro de usuários, administração do site, gerenciamento de campeonatos e etc.O lado servidor não deve tratar das questões de interação com o usuário (I/O), ele éindependente de interface.Ainda, conforme o tipo de requisição ou chamada para execução de ações do jogo, há a necessidade de tratamento dos parâmetros informados pela interface e a chamada correta aos respectivos objetos do modelo. Por exemplo, se a interface solicitou uma jogada, o serviço atende esta requisição e repassa ao motor do jogo. Ou, caso seja feita uma requisição de um novo cadastro, é invocado o objeto de cadastro de usuário em BD, recebendo os parâmetros necessários para completar a ação.Por fim, como conseqüência da separação das camadas, tem-se a vantagem de poder suportar novas interfaces, sem a necessidade de modificação da camada de modelo. Por exemplo, o jogo poderia suportar jogadas via SMS.

Page 8: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 8

Padrão MVCPadrão MVCPadrão MVC

Exemplo:Este tipo de aplicação deveria utilizar o padrão MVC para sua arquitetura:

Camada de interface é implementada de acordo com a sua lógica de interação: em HTML dinâmico (ou ASP), ou com bibliotecas de interface gráfica ou com API gráfica específica para plataformas móveis.A camada Controller recebe diferentes requisições, faz o tratamento dos parâmetros de execução e encaminha a execução para a parte do modelo.Modelo possui as classes necessárias para o jogo funcionar de acordo com as regras de xadrez e para mantenção do serviço (cadastro, envio de e-mail, administração do site e etc.)Por fim, sempre que o modelo computa algum requisição, ele devolve um resultado para o controller. O controller então, repassa o resultado para a camada de interface fazer a apresentação das informações processadas.

Page 9: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 9

Padrão MVCPadrão MVCPadrão MVC

Exemplo:

Celular

Website do jogo

Aplicativo gráfico ChessController

ChessEngine

CadastroUsuario

AdministracaoSite

processRequest(request){

command = getCommand(request)

...

if(command == “play”){

move = getParam(request, “move”);

result = engine.update(move);

if(result == SUCCESS){

send(response, “success”);

} else {

send(response, getError(result));

}

}

...

}

update(move) throws InvalidMove{

if(canMoveTo(move)){

updateBoard(move);

return SUCCESS;

}

return INVALID(move, error);

}

<html>

<form action=“ChessController”>

<input name=“move”/>

<input type=“submit” />

</form>

</html>

Page 10: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 10

Exemplo:

Padrão MVCPadrão MVCPadrão MVC

Graphic application

WebsiteView

ChessController

users, matches, ranking, ...

ChessBoard object

DB files

Model

// process request

Move move = new Move();

move.setFrom(get(“from”));

move.setTo(get(“to”));

...

sendResponse(boardState);

Page 11: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 11

Padrão MVCPadrão MVCPadrão MVC

Considerações finais sobre MVC:Pode ser aplicado a qualquer aplicação.Grande vantagem é manter a independência das camadas, de tal forma que é possível surgirem novas formas de apresentação para os dados, sem a necessidade de alteração do modelo.A camada modelo tem a preocupação única e exclusiva de processar os dados e não de se preocupar com a forma como vieram.Camada controller deve entregar “parâmetros prontos” (já no padrão de recebimento por parte do modelo). Assim como, formatar uma saída padronizada para as interfaces.

Page 12: Padrões de Arquitetura de Softwareprofessor.unisinos.br/ltonietto/jed/toe/DesignPatterns-Arquitetura.pdf · Padrão MVCPadrão MVC Criado em 1979 por Trygve Reenskaug (Xerox PARC)

25-fev-09 Leandro Tonietto 12

BibliografiaBibliografiaBibliografia

[1] GAMMA, Eric; Helm, Richard; Johnson, Ralph and Vlissides, John, Design Patterns. Elements of Reusable Software. Addison-Wesley, Reading, MA, 1995.

[2] GRAND, Mark. Overview of Design Patterns. http://www.mindspring.com/~mgrand/pattern_synopses.htm

[3] KERIEVSKY, Joshua. A Learning Guide To Design Patterns. Industrial Logic, Inc. Feb, 2000. http://www.industriallogic.com/papers/learning.html