1
2011 Prof. Marco Fagundes - [email protected]
Arquitetura de Software
Padrões no Desenvolvimento de Software
-Tópicos
w Objetivos
w Padrões no Desenvolvimento de Software w Padrões de Arquitetura e Projeto
w Frameworks
w Combinando Padrões no Projeto da Arquitetura w Leitura Recomendada
w Exercícios
3
2011 Prof. Marco Fagundes - [email protected]
n Apresentar os níveis de abstração de
um projeto
n Definir padrões de projeto e arquitetura
n Integrar padrões de projeto e
arquitetura no desenvolvimento de software
Unidade II - Objetivos
Requisitos Arquiteturade Software Implementação RMI Java CORBA DelphiA.S. no Processo de Desenvolvimento
w Reduz o gap semântico entre os requisitos e o código w Fornece uma base para as outras fases de
desenvolvimento do software Requisitos Implementação RMI Java Métodos OO Requisitos Arquiteturade Software Implementação RMI Java Requisitos Arquitetura Código
5
2011 Prof. Marco Fagundes - [email protected]
Padrões no Desenvolvimento de Software
w Padrões são soluções documentadas para problemas recorrentes dentro de um determinado contexto
w Problemas podem ocorrer em diversos níveis de abstração
w A classificação do padrão depende do nível de sua aplicação: Arquitetura, Projeto e Código Requisitos Arquitetura Código Projeto 6
2011 Prof. Marco Fagundes - [email protected]
Padrões no Desenvolvimento de Software
w Padrões Arquiteturais: Fornecem um esquema de estruturação para sistemas especificando: um conjunto de subsistemas, suas propriedades, e regras de relacionamentos
w Padrões de Projeto: Fornecem um esquema para refinar os subsistemas ou componentes de um sistema, ou os relacionamentos entre eles
w Idiomas: Descrevem como implementar aspectos de componentes ou os relacionamentos entre eles usando as características de uma determinada linguagem de programação
7
2011 Prof. Marco Fagundes - [email protected]
Padrões no Desenvolvimento de Software
8
2011 Prof. Marco Fagundes - [email protected]
Documentação de um Padrão
w Padrões são diferentes que estilos arquiteturais, pois são mais ricos em documentação
9
2011 Prof. Marco Fagundes - [email protected]
Documentação de um Padrão
w Um padrão é documentado pelos seguintes elementos:
uNome uIntenção uMotivação uAplicabilidade uEstrutura uParticipantes uColaborações uConsequências uImplementação uExemplo de código uUsos conhecidos uPadrões relacionados
Exemplo de um Padrão
w Contexto: Acesso do cliente às funcionalidades de um sistema
w Problema: Cliente precisa conhecer muitos detalhes dos subsistemas para utilizar o sistema
w Solução: Oferecer uma interface única para o conjunto subsistemas
Fachada
11
2011 Prof. Marco Fagundes - [email protected]
Motivação para aprender e utilizar Padrões
w Reutilização de conhecimento
w Os padrões permitem utilizar na prática os conceitos da orientação a objetos para construir código de alta coesão e baixo acoplamento
w Vocabulário comum, facilita a comunicação
Atividade 3 (Tempo: 30 min)
w 1. O que você entende por padrões no desenvolvimento de software?
w 2. Qual a diferença entre padrões de arquitetura e projeto?
w 3. Apresente uma breve descrição dos padrões que você conhece.
13
2011 Prof. Marco Fagundes - [email protected]
Padrões de Arquitetura e Projeto
-14
2011 Prof. Marco Fagundes - [email protected]
Padrões de Arquitetura
w
wSão diferentes que estilos arquiteturais, pois são maisSão diferentes que estilos arquiteturais, pois são mais ricos em documenta
ricos em documentaççãoão
Categoria do Problema Padrões Arquiteturais
Estruturação de Tarefas LayersPipes-and-Filters Blackboard Sistemas Distribuídos BrokerPipes-and-Filters
Microkernel
Sistemas Interativos Model-View-Controller (MVC)
Presentation-Abstraction-Control (PAC) Sistemas Adaptáveis Microkernel
Reflection
15
2011 Prof. Marco Fagundes - [email protected]
Padrões de Projeto
w A obraDesign Patterns de Erich Gamma, John Vlissides,
Ralph Jonhson e Richard Helm, conhecidos como "The
Gang of Four", ou GoF, descreve 23 padrões de projeto
w "Os padrões de projeto são descrições de objetos que se comunicam e classes que são adaptadas para resolver um problema genérico de design em um contexto específico“ (GoF)
16
2011 Prof. Marco Fagundes - [email protected]
17
2011 Prof. Marco Fagundes - [email protected]
Relacionamento entre Padrões
MVC
1. Separa a interação homem máquina do núcleo de funcionalidade.
2. Implementa o mecanismo de propagação de mudança. 3. Projeta e implementa as views. 4. Projeta e implementa os controllers. 5. Projeta e implementa o
relacionamento view-controller. 6. ...
Publisher - Subscriber 1. Identificar o assunto e seus interessados.
2. ...
Command Processor
1. Define a interface do comando abstrato.
2. ...
Factory Method 1. ...
Relacionamento entre Padrões
w Padrões de Arquitetura e de Projeto são complementares
19
2011 Prof. Marco Fagundes - [email protected]
Passos Envolvidos na Selecionar de Padrões
1. Considerar como os padrões podem solucionar os problemas de projeto
2. Analisar o problema e compare com a solução fornecida pelos padrões
3. Analisar a relação entre os padrões envolvidos na solução
4. Verificar as causas que podem prejudicar a qualidade do produto
-21
2011 Prof. Marco Fagundes - [email protected]
Padrão MVC (
Model-View-Controller)
w O componente Model encapsula a
lógica de negócios
w O componente View obtém os
dados do Model ou uma saída do controller e exibe para o usuário w O Controller intermedia o fluxo da
aplicação recebendo uma entrada e a transforma em requisições para o
Model ou View
Figura adaptada de : http://ash-mvc.org/media/Image/ash-mvc-architecture.gif
22
2011 Prof. Marco Fagundes - [email protected]
Combinando Tecnologias
Tomcat 4.1.12 Tomcat 5.5.15 Model Controller Vieww Em uma aplicação web bem estruturada, páginas JSP
são frequentemente usadas em conjunto com servlets e
objetos do negócio no padrão Model-View-Controller
23
2011 Prof. Marco Fagundes - [email protected]
Interface com o usuário (GUI) Negócio Acesso a Dados Código para a apresentação da aplicação Código inerente à aplicação sendo desenvolvida
Código para acesso e manipulaçção de dados
Padrão
Client-Server n-Tier (Níveis)
w Objetivo: estruturar o código em níveis (Tier), de forma a obter melhor reuso, manutenibilidade e extensibilidade
24
2011 Prof. Marco Fagundes - [email protected]
Padrão
Client-Server n-Tier (Níveis)
Interface com o usuário (GUI)
Negócio
25
2011 Prof. Marco Fagundes - [email protected]
Padrão
Layers (Camadas)
w Modularidade e seus benefícios:
n separação de interesses (separation of concerns)
n reusabilidade
n extensibilidade
w Mudanças em uma camada não afetam as outras w Uma camada comunica-se somente com camadas
adjacentes
Padrão
Layers (Camadas)
w Layer não é Tier
Cliente
27
2011 Prof. Marco Fagundes - [email protected]
Frameworks
-w Frame-work implementa soluções genéricas (estrutura e
comportamento) para um
determinado conjunto de problemas w Aumenta a produtividade através de componentes reutilizavéis e flexíveis w Oferece uma base para o início da
construção do produto (ponto de partida)
w Customização para uma aplicação particular
29
2011 Prof. Marco Fagundes - [email protected]
Framework
w Um framework captura a funcionalidade comum entre várias aplicações
30
2011 Prof. Marco Fagundes - [email protected]
Framework X Design Patterns
w Aparentemente, os dois consistem de classes, interfaces e colaborações prontos
w Frameworks não são Padrões
n Padrões são mais abstratos
n Padrões podem documentarframeworks
n Diferença de natureza – Padrões (documento) x
Framework (código)
n Fornecimento e realização de soluções
31
2011 Prof. Marco Fagundes - [email protected]
Framework
w Frameworks são implementações parciais sobre as quais podem-se construir componentes para o
desenvolvimento da solução
w Existem diversos frameworks que implementam o
padrão MVC
32
2011 Prof. Marco Fagundes - [email protected]
- Combinando Padrões no Projeto da
Arquitetura
-33
2011 Prof. Marco Fagundes - [email protected]
w A arquitetura de um software é a estrutura ou
organização de elementos estruturais de um
sistema e suas colaborações através de
interfaces
Revisando o Modelo de Visão 4+1 (Abordagem2 – RUP)
Visão Lógica (RUP)
35
2011 Prof. Marco Fagundes - [email protected]
Projeto da Arquitetura - Visão Lógica - Identificação de Classes
w No Processo Unificado da Rational pode-se
ter os seguintes tipos de classes (seguindo o princípio MVC – [Model-View-Controller]):
n Entidade (<<entity>>) – modela
informação e comportamentos associados com persistência
n Fronteira (<<boundary>>) – tratam da
comunicação entre o sistema e o ambiente externo
n Controle (<<control>>) – modelam o
comportamento sequencial específico a um ou mais casos de uso
Ex: Disciplina
Ex: FormCadDisciplina
Ex: HandlerDisciplina
O Padrão MVC e
Client-Server n-Tier
Controller View
Model
Interface com o usuário (GUI)
Negócio Acesso a Dados
37
2011 Prof. Marco Fagundes - [email protected]
Arquitetura – Proposta1
GUI Negócio Acesso a Dados Fachada DAOBDR GUI (from Visão Lógic a)Service1 Service2
38
2011 Prof. Marco Fagundes - [email protected]
Padrão
Strategy
w O padrão Strategy permite implementar operações
usando polimorfismo
w Strategy permite que os algoritmos mudem de forma transparente para seus clientes
39
2011 Prof. Marco Fagundes - [email protected]
Arquitetura – Proposta 2
GUI Negócio Acesso a Dados Interface Negócio Dados Fachada DAOBDR DAOBDOO GUI (from Visão Lógic a)Service1
iDAO
Service2
40
2011 Prof. Marco Fagundes - [email protected]
Visão Lógica- Organização em Níveis (Tier)
Negócio GUI Acesso a Dados TelaCadDisciplinas inserirDisciplina(disciplina) FachadaSCA inserirDisciplina(disciplina) ControladorCadastro inserirDisciplina(disciplina) DisciplinaDAOBDR inserirDisciplina(disciplina) iDisciplinaDAO inserirDisciplina(disciplina) realiza DisciplinaDAOXML inserirDisciplina(disciplina) realiza DisciplinaService inserirDisciplina(disciplina) Disciplina descricao ementa
41
2011 Prof. Marco Fagundes - [email protected]
Leitura Recomendada
w Livro da GoF - Padrões de Projeto - Soluções
reutilizáveis de software orientado a objetos, Gama, E. et al. (Biblioteca)
w Artigos sobre Arquitetura e Estilos (site da disciplina) w Livro sobre Padrões de Projeto (site da disciplina) w Padrões - http://hillside.net/patterns/