ENGENHARIA DE
SOFTWARE
Arquitetura de Software
PROF. RAFAEL RUBIATI SCALVENZI
[email protected]
Projeto de Arquitetura
-Primeiro passo do projeto de sistema
-É frequentemente conduzido em paralelo
com atividades de especificação de requisitos
-Elo entre:
Requisitos (domínio do problema)
Projeto detalhado (domínio da
solução)
-Envolve
Identificação dos componentes principais
do sistema
Definição das interfaces de comunicação entre os
componentes
Vantagens da Arquitetura
-Comunicação entre stakeholders
A arquitetura pode ser usada como
foco da discussão sobre o sistema
-Análise de sistema
Adequação aos requisitos não funcionais
-Reutilização em larga escala
Um componente da arquitetura pode
ser reusado em outros sistemas
A arquitetura pode afetar:
-Desempenho
Incluir gargalos de comunicação
-Facilidade de distribuição
Sistemas podem executar em várias
máquinas
-Facilidade de manutenção
Componentes devem ser substituíveis
Diagrama de Componentes
-Identifica os principais subsistemas que
serão desenvolvidos
-Notação simplificada
Caixas representam os subsistemas
(componentes)
Linhas representam alguma
comunicação entre os subsistemas
Caixas dentro de caixas indicam que um
componente foi decomposto
Exemplo de Arquitetura
Subsistema de
Subsistema de Subsistema de
Controle de
Vendas Fornecedores
Estoque
Subsistema de
Subsistema de
Gerência de
Entrega
Pessoal
Diagrama de Componentes
Para Projeto de Arquitetura
-Vantagens
Facilita comunicação com stakeholders
Úteis para planejamento de projeto
Facilita o desenvolvimento em paralelo
-Desvantagens
Não mostra a natureza dos
relacionamentos entre componentes
Não indica as propriedades internas dos
subsistemas
Decisões de projeto arquitetural
-Questões precisam ser respondidas
Como o sistema será distribuído em
diferentes máquinas?
Como as funcionalidades serão
decompostas em componentes?
Como avaliar se a arquitetura atende
aos requisitos não funcionais?
Existe uma arquitetura genérica que
possa ser usada?
Requisitos Não Funcionais
-A arquitetura deve considerar
requisitos não funcionais
Desempenho: evitar comunicação
excessiva entre componentes distribuídos
Segurança: ocultar características críticas
de segurança em camadas mais internas
Disponibilidade: incluir componentes
redundantes e tolerância à falhas, etc.
Padrões Arquiteturais
-Um padrão é uma descrição do
problema e a essência da sua solução
-Documenta boas soluções
para problemas recorrentes
-Deve ser suficientemente abstrato
para ser reusado em aplicações
diferentes
Padrões Arquiteturais
-Padrões arquiteturais expressam formas
de organizar a estrutura fundamental do
sistema
Permitem a construção de uma
arquitetura aderente a certas
propriedades
-O conhecimento de padrões arquiteturais
ajuda na definição da arquitetura do
sistema
Use arquiteturas de Referência
-Embora cada sistema seja único, é
comum que sistemas do mesmo
domínio tenham arquiteturas
similares
-Um projeto pode ser baseado em
um padrão arquitetural conhecido
Padrões Arquiteturais
-Padrões arquiteturais definem:
-Um conjunto de subsistemas
-As responsabilidades de cada subsistema
-Regras de relacionamentos entre os
subsistemas
- A estrutura fundamental: atividades
subsequentes devem seguir esta estrutura
-Padrões arquiteturais representam os
padrões mais abstratos
Padrões de projeto (Modelagem)
Idiomas (Programação)
Padrões são abstratos
-Os padrões não definem completamente
a arquitetura do sistema
Padrões são templates que devem ser
refinados
-Exemplos de refinamentos
Incluir outros componentes e novos
relacionamentos
Definir padrões de projeto e idiomas em
fases subsequentes
Escolha do Padrão
- Sistemas complexos possuem mais
de um padrão arquitetural
- A escolha do padrão arquitetural deve
estar associada ao tipo de sistema e
seus requisitos não funcionais
-Perguntas que podem ajudar:
O sistema é interativo?
Possui muitas variações?
Que requisitos não funcionais são
importantes? Confiabilidade?
Adaptabilidade?
Padrões Arquiteturais
Da desordem a estrutura
⚪ Layered Architecture (Arquitetura em Camadas)
⚪ Blackboard (Arquitetura de Repositório)
⚪ Pipes and Filters (Dutos e Filtros)
Sistemas distribuídos
⚪ Client-Server (Cliente-Servidor)
Broker
Sistemas interativos
⚪ Model-View-Controller (MVC)
⚪ Presentation-Abstraction-Control
Sistemas adaptáveis
⚪ Microkernel
⚪ Reflection
Da Desordem a Estrutura
-Layered Architecture
Arquitetura em Camadas
-Blackboard
Arquitetura de Repositório
-Pipes and Filters
Dutos e Filtros
Arquitetura em Camadas
-Organiza o sistema em um
conjunto de camadas onde
cada camada oferece um
conjunto de serviços
-Uma camada somente:
Solicita serviços da camada inferior
Fornece serviços para a camada superior
Exemplo: Três Camadas
Vantagens
-As camadas podem ser
facilmente substituídas por
equivalentes
-Mudanças em uma camada
teoricamente só impacta a camada
superior
-Camadas superiores podem ser
independentes de plataforma/hardware
Desvantagens
-Estruturar o sistema em
camadas não é trivial
Pode ser difícil identificar quais os serviços
elementares das camadas inferiores
-Muitas camadas podem comprometer
o desempenho do sistema
A requisição tem que trafegar pelas várias
camadas até ser atendida
Arquitetura de Repositório
-Também conhecido como Blackboard
-Os subsistemas manipulam a
mesma base de dados
Um (ou mais) subsistema gera os dados
Vários subsistemas leem os dados
-Adotado principalmente quando dados
são compartilhados em grandes
quantidades
Exemplo de Repositório
Principais Vantagens
-Eficiência em compartilhar dados
-Backup é centralizado (mais fácil)
-Formas de proteção dos dados podem ser
implementadas
-Os subsistemas que gravam dados não
necessitam saber quem os usa
-Fácil integrar novos subsistemas
Desvantagens
-Manter e evoluir grandes volumes
de dados pode ser difícil / caro
-Subsistemas diferentes podem ter
requisitos diferentes
Mais segurança ou maior disponibilidade
-Dificuldade para distribuir os dados
Dados redundantes ou inconsistentes
Dutos e Filtros
-Padrão de organização da
dinâmica de um sistema
-Dois papéis principais
Dutos: componentes que conduzem
ou distribuem os dados
Filtros: componentes que
transformam os dados
-Usado principalmente em aplicações de
processamento de dados
Dinâmica do Padrão
-Os dados de entrada se
movem pelos dutos
-Os dados são transformados
pelos filtros até serem convertidos
em dados de saída
As transformações podem ocorrem
em sequência ou em paralelo
Exemplo de Dutos e Filtros
Entradas: Faturas e Pagamentos
Saídas: Recibos e Lembretes
Vantagens
-O módulo de transformação
(filtro) é bem modular
Facilmente reusável e substituível
-O estilo de workflow é aderente a
muitos processos de negócios
-É simples evoluir o sistema pela
adição de filtros
-Se aplica tanto a sistemas sequenciais
quanto a sistemas concorrentes
Desvantagens
-O formato dos dados trafegados
deve ser acordado entre os módulos
-Pode haver um overhead
causado pela padronização dos
dados
-Incompatibilidade no formato dos
dados pode dificultar a reutilização de
filtros
Arquitetura MVC
MVC funciona como um padrão de
arquitetura de software que melhora
a conexão entre as camadas de
dados, lógica de negócio e interação
com usuário.
-Divisão em três componentes: o
processo de programação se torna
algo mais simples e dinâmico.
Arquitetura MVC
Vantagens
-Separação muito clara entre as camadas de
visualização, dados e regras de negócios;
-Manutenção do sistema se torna mais fácil;
-Reaproveitamento de código, principalmente da
camada de modelo, que pode ser reutilizada em
outros projetos;
-As alterações na camada de visualização não
afetam camadas inferiores;
-Permite o desenvolvimento, testes e
manutenção de forma isolada entre as camadas;
Desvantagens
-Em sistemas de baixa complexidade, o MVC
pode criar uma complexidade desnecessária;
-Exige muita disciplina dos desenvolvedores
em relação à separação das camadas;
-Requer um tempo maior para modelar o
sistema.