Arquitetura de Software
Rogério Dourado
rogerio@dsc.ufcg.edu.br
Profa: Francilene Garcia
Disciplina: Projeto I
DSC – CCT – UFCG
Março - 2005
1
Roteiro
Introdução

Definições, Importância e Uso
Visões
Processo de Arquitetura
Na prática...
2
Introdução
3
Por que construímos sistemas?
Para atingir alguns objetivos de negócio
Exemplos:






Oferecer novos serviços
Satisfação dos clientes
Otimizar operações
Aumentar mercado
Obter diferencial
competitivo
Etc...
Requisitos
Funcionais
Não funcionais
4
Um Panorama
Requisitos
Arquitetura
Principalmente os requisitos não
funcionais é que determinam a
arquitetura
5
O que é Arquitetura de Software?
Não existe uma definição universal, mas...
“...são as estruturas que incluem
componentes, suas propriedades
externas e os relacionamentos entre
eles, constituindo uma abstração do
sistema. Esta abstração suprime
detalhes de componentes que não
afetam a forma como eles são usados ou
como eles usam outros componentes,
auxiliando o gerenciamento da
complexidade.”
“...é a interface entre duas partes distintas: o problema de
negócio e a solução técnica.”
6
Qual sua importância?
Sistemas estão cada vez mais complexos
Diversidade de atores envolvidos, cada um com suas
necessidades (visões)
Uma série de decisões (não somente técnicas)
precisam ser registradas, representadas e conciliadas
Antecipa decisões de projeto
Principal meio pelo qual os requisitos não-funcionais
(que são tão importantes quantos os funcionais)
devem ser validados




Performance
Segurança
Confiança
Etc...
7
Arquitetura X Design
Toda arquitetura é design, mas nem todo
design é arquitetura
A arquitetura restringe as decisões de design
de mais baixo nível

Essas decisões devem ser compatíveis com a
arquitetura
O design do que é interno aos componentes
evidenciados na arquitetura é livre para ser
definido
8
Documentação da Arquitetura
Todo sistema tem uma arquitetura
A documentação é uma tentativa de
representação desta arquitetura
Serve como



Veículo de comunicação entre atores
Base para análise dos atributos do sistema
Guia para o desenvolvimento
9
Visões
10
Visões
Uma arquitetura é algo difícil de ser
visualizado de uma única vez
Sistemas são compostos de várias estruturas




Módulos, mostrando a composição/decomposição
mapeadas ao código
Processos e como estes se sincronizam
Programas e como estes trocam dados
Como o software é distribuído no hardware
Visões é a forma de gerenciar esta
complexidade
11
Visões
Diferente visões expõem certos requisitos não
funcionais em diferentes níveis. Ex:


Visão de Deployment – Performance e confiança
Visão em Camada - Portabilidade
A relevância das visões varia de acordo com o
projeto


Quem são os atores?
Qual relação destes com a arquitetura?
Nenhum visão específica pode representar
toda a arquitetura
12
Esquemas de Visões
São conjuntos de visões propostos por vários
autores



Kruchten, Rational 4+1
OMT
Booch
Apesar de diferirem, todas as visões “caem”
em alguma destas categorias:



Estruturação em termos de unidades de
implementação, denominados módulos
Estruturação em termos de componentes que
possuem comportamento em tempo de execução
Relacão ou alocação do software com o ambiente
13
Estilos
Formas recorrentes/comuns de modelos
Definem uma família de arquiteturas. Ex:

Tipo de Visão de Módulo
 Decomposição, Uso, Generalização, Camada

Tipo de Visão de Componente
 Cliente-servidor, Peer-to-Peer, Pipe-and-Filter,
Camada

Tipo de Visão de Alocação
 Deployment, Alocação de Tarefa
14
Estilo Pipe-and-Filter - Exemplo
Divide a tarefa de um sistema em vários
passos de processamento sequencial
Componentes



São chamados filtros
Tem um conjunto de entradas e saídas
Processa um stream de dados
Conectores

Pipes: servem como condutores dos dados
Ex: Compiladores,
Shell Unix
15
Estilo Pipe-and-Filter - Exemplo
Especializações do estilo

Pipelines, Typed Pipes...
Implementação

Divida as tarefas do sistema em uma sequência de
estágios de processamento
 Cada estágio deve depender somente da saída do seu
predecessor
 Todos os estágios são conectados por um fluxo de dados


Defina o formato de dados a ser passado ao longo
de cada pipe
Decida como implementar cada conexão com pipe
 Se estes serão ativos ou passivos
16
Exemplo do Uso de Estilos
“O sistema X tem como entrada um conjunto de
linhas. As linhas são formadas por palavras que por
sua vez são formadas por caracteres. As linhas
podem sofrer um shift circular quando a primeira
palavra é retirada do início e colocada no final. O
sistema gera a lista de todas os possíveis shifts de
todas as linhas em ordem alfabética.”
Cada estilo possuis suas vantagens e desvantagens:



Subrotina com dados compartilhados
Pipe-and-Filter
Etc...
17
Subrotina com dados
compartilhados
Não permite reuso, mudanças não são
bem toleradas, eficiente no uso do
espaço
18
Pipe-and-Filter
Unidades de processamento isolados (assimila
melhor as mudanças)
Facilidade de acréscimos de novos filtros
Porém ineficiente em termos de uso de espaço
19
Processo de Arquitetura
20
Processo de Arquitetura
Fases em um nível macro:






Elaboração do modelo de negócio
Entendimento dos requisitos
Criação ou seleção de uma arquitetura
Representação e divulgação
Implementação baseada na arquitetura
Avaliação da arquitetura
Modelos Arquiteturais

Negócio, domínio da aplicação, componentes,
infra-estrutura tecnológica, distribuição do
software
21
Papéis
Analista de requisitos

Identifica requisitos funcionais e não-funcionais
Arquiteto


Cria a arquitetura e identifica outros requisitos
não-funcionais que a arquitetura deve atender
Acompanha o processo de desenvolvimento da
arquitetura proposta
Projetista ou Implementador

Implementador dos componentes propostos
22
Relação com outras fases do
processo
A arquitetura deve objetivar todo o
sistema
Pode haver ênfase para a 1ª versão
23
Relação com outras fases do
processo
Arquitetura guia as fases subsequentes
24
Na prática...
25
Mas e aí, como se faz?
O conjunto de visões arquiteturais é o meio pelo qual
tentamos gerenciar a complexidade do software
Etapa intermediária necessária da transformação dos
requisitos em código
Na prática, podemos adotar uma abordagem
crescente de detalhamento




Visão de Negócio
Visão Conceitual
Visão de Desenvolvimento
Visão de Deployment
26
Fazendo um “Zoom”
Visão de Negócio

Como o negócio funciona?
Visão Conceitual

Quais os principais conceitos envolvidos e como
estes se relacionam?
Visão de Desenvolvimento

Qual a melhor maneira de implementar estes
conceitos tendo em vista a solução?
Visão de Deployment

Depois de pronto como o software sera instalado e
distribuído ao longo da infra-estrutura?
27
Visão de Negócio
Atores,
processos e suas
interações
Como o negócio
resolve o
problema
28
Visão de Negócio
Como as entidades de negócio
colaboram
29
Visão Conceitual
Mais próxima ao
domínio da
solução
Ainda não tem
os detalhes
necessários a
implementação
Conceitos e suas
relações
30
Visão de Desenvolvimento
Qual a melhor maneira de implementar a solução
tendo em vista os requisitos?
Modularização, comunicação entre subsistemas,
reusabilidade
Emprego de padrões arquiteturais como MVC
31
Visão de Deployment
Modela



Infra-estrutura
Como o Software
está instalado na
infra-estrutura
Mecanismos de
comunicação
(middleware)
32
Perguntas?
33
Download

Arquitetura