O documento discute padrões de arquitetura de software, definindo-os como soluções bem-sucedidas para problemas recorrentes de projeto. Apresenta o padrão Model-View-Controller como exemplo, separando aplicações com interface gráfica em três componentes responsáveis pelo modelo de dados, visualização e controle.
2. Padrões
• O que é um Padrão?
– Comportamento “expert” (especialista)
Arquitetura
• Par problema-solução Economia
Eng. Software
2 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
3. Um Exemplo na Arquitetura
• Window Place
– Todo mundo gosta
– Se não existe, raramente as pessoas se
sentem bem
• Ou elas se sentam para se sentir confortáveis
• Ou se dirigem para próximas da luz
– Portanto: em todos os cômodos que se passa
boa parte do tempo, deve-se fazer, pelo
menos, uma janela “window place”
3 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
4. Um Exemplo na Arquitetura
4 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
5. Um Exemplo em Arquitetura de
Software
• Model-View-Controller
Considere o desenvolvimento de um SW com IHM.
– Estender funcionalidades pode implicar em:
• Modificar menus
• Adaptar a interface para usuários específicos
– O sistema pode precisar migrar para uma nova
plataforma com um padrão “look-and-feel” diferente
• Mesmo uma atualização no sistema de janelas pode implicar
em mudanças no código
5 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
6. Um Exemplo em Arquitetura de
Software
– Um software com toda esta funcionalidade
pode ser caro demais!
• Desenvolver vários módulos certamente não deve ser a
melhor solução!
• Considere 2 aspectos:
– Mudanças para a interface do usuário deveriam ser
fáceis e possivelmente em tempo de execução
– Adaptar ou portar a interface não deve ter impacto no
código do núcleo da aplicação
• Para resolver, divide-se este tipo de aplicação
em 3 áreas: processamento, saída e entrada
6 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
7. Um Exemplo em Arquitetura de
Software
– Componente MODEL: encapsula os dados do núcleo
da aplicação e sua funcionalidade
– Componentes VIEW: mostra as informações para o
usuário. Obtém-nas do MODEL
– Cada componente VIEW tem um componente
CONTROLLER associado
• Recebem a entrada (usualmente eventos)
• Eventos são traduzidos em requisições de serviços que são
enviadas para o MODEL ou para VIEW
• O usuário interage com o sistema apenas através dos
CONTROLLERs
• Esta separação possibilita múltiplas visões do
mesmo modelo
7 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
8. Model-View-Controller
8 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
9. Propriedades dos Padrões
• Um padrão trata um problema recorrente que
surge em situações de projeto e apresenta uma
solução para ele
• Padrões documentam experiências de projeto
reais e bem sucedidas
• Identificam e especificam abstrações que estão
acima do nível de classes e instâncias únicas ou
de componentes
• Provêem um vocabulário comum e
entendimento para princípios de projeto
9 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
10. Propriedades dos Padrões
• São um meio para a documentação de
arquiteturas de software
• Dão suporte à construção de softwares
com propriedades definidas
• Ajudam-nos a construir arquiteturas de
software complexas e heterogêneas
• Ajudam-nos a gerenciar a complexidade
do software
10 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
11. Definição
• Um padrão para arquitetura de software
descreve um problema de projeto recorrente
particular que surge em contextos de projetos
específicos e apresenta um esquema genérico,
bem comprovado, para sua solução
• O esquema de solução é especificado
descrevendo-se seus componentes
constituintes, suas responsabilidades e
relacionamentos e a forma como eles
colaboram.
11 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
12. O que constitui um Padrão
• Existe um “esqueleto” de 3 partes que
captura a essência de todo padrão,
independente de seu domínio:
– Contexto: situação de projeto que levanta um
problema de projeto
– Problema: o problema recorrente que se
levanta neste contexto. É descrito através de
um conjunto de aspectos que devem ser
considerados na solução
12 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
13. O que constitui um Padrão
– Solução: uma solução bem sucedida do
problema, composta por uma parte estática,
que descreve a estrutura com seus
componentes e seus relacionamentos e uma
parte dinâmica, que descreve o
comportamento em tempo de execução dos
componentes
13 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
14. Categorias
• Padrões Arquiteturais
– Expressam um esquema estrutural
fundamental para sistemas de software
– Provêem um conjunto de subsistemas
fundamentais, especificam suas
responsabilidades e incluem regras e guias
para a organização dos relacionamentos
entre eles
14 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
15. Categorias
• Padrões de Projeto
– Provêem um esquema para refinamento dos
subsistemas ou componentes de um sistema
de software ou dos relacionamentos entre
eles.
– Descrevem uma estrutura recorrente comum
de componentes de comunicação que
solucionam um problema de projeto geral
dentro de um contexto particular
15 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
16. Categorias
• Idiomas
– São um padrão de “nível baixo” específico de
uma linguagem de programação
– Descrevem como implementar aspectos
particulares de componentes ou de
relacionamentos entre eles usando as
características de uma dada linguagem
16 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann