Arquitetura de Software
Jamerson.lima@gmail.com
CONCEITOS BÁSICOS
Parte I
O que é arquitetura?
Processo
de
Controle
Modelo
de Perda
de Oxig.
Modelo
de
Reverb.
Modelo
de Ruído
O que NÃO é arquitetura?
• Novos “padrões” criados por empresas que
utilizam seus produtos e ferramentas.
• O framework ou tecnologia da moda.
• Linguagens de programação, bibliotecas
consagradas.
• Frameworks altamente configuráveis e já com
“tudo pronto”.
• Um documento ou uma apresentação.
• Um desenho de caixinhas e setinhas.
O que é arquitetura?
• Definição:
– A arquitetura de um programa ou sistema
computacional é a estrutura ou estruturas do
sistema que compreende os elementos de
software, seus elementos externos visíveis e as
relações entre elas. De “Software Architecture in
Practice, Second Edition”
O que é arquitetura?
• É uma abstração
• Parte visível e comportamento externo dos
elementos
• Várias representações
• Existe em qualquer programa
O que é arquitetura?
Planejamento &
Informação
Visões
Fonte: Wikipedia
http://en.wikipedia.org/wiki/File:IP_stac
k_connections.svg
Tipos de Visões
• Módulos
• Componente e Conector
• Alocação
Módulo
• Decomposição
• Estrutural
• Relacionamento “Usa”
• Generalização
Componente e Conector
• Processos/Threads
• Execução
• Concorrência
• Repositórios de dados
Alocação
• Deployment
– Processos e Threads
– Alocação em processadores
• Implementação
– Módulos
– Sistema de arquivos(diversos ambientes)
• Delegar trabalho
– Módulos
– Times de desenvolvimento
Modelo de visão arquitetural 4+1
Modelo de visão arquitetural 4+1
• Kruchten, Philippe (1995,
November). Architectural Blueprints — The
“4+1” View Model of Software Architecture
• Popular
• RUP
Criando uma Arquitetura
Usabilidade?
Modificabilidade?
Desempenho?
Por que não tudo?
Afetam as funcionalidades?
Afetam entre si?
Atributos de Qualidade do Sistema
Como alcançar determinados atributos?
Cenários de Atributos de Qualidade
Cenário Geral de Disponibilidade
• Fonte:
– Interna
– Externa
• Estímulo:
– Omissão
– Crash(Repetidas omissões)
– Timming
– Resposta incorreta
• Ambiente:
– Normal
– Degradado
– Operacional
• Artefato:
– Processo
– Armazenamento
– Processador
– Comunicação
• Resposta:
– Registrar
– Notificar
– Desabilitar
– Continuar
– Ficar indisponível
• Medida:
– Tempo de reparo
– Tempo de disponibilidade
Exemplo de Cenário de Disponibilidade
• Fonte: Externa
• Estímulo: Mensagem inesperada
• Ambiente: Operação normal
• Artefato: Processo
• Resposta: Informar operador e continuar a
operar
• Medida: Sem Downtime
Qualidade de Negócio
• Time to market
• Custo e benefício
• Tempo de vida projetado
• Mercado alvo
Qualidade da Arquitetura
• Integridade Conceitual
• Corretude e Completude
• Construtabilidade
PROJETANDO A ARQUITETURA
Parte II
ADD - Attribute-Driven Design
• Entradas
– Requisitos funcionais e não-funcionais
– Casos de uso
– Restrições
• Isso tudo vira cenários de requisitos de
qualidade
Passos do ADD
1. Escolha um módulo para decompor
2. Refine o módulo
1. Escolha os direcionadores arquiteturais
2. Escolha um padrão arquitetural
3. Crie módulos e defina responsabilidades
4. Defina interfaces
5. Verifique e refine os cenários de qualidades e
casos de usos
3. Repita os passos para outro módulo
PADRÕES ARQUITETURAIS
Parte III
Camadas
Fonte: Wikipedia
http://en.wikipedia.org/wiki/File:IP_stac
k_connections.svg
Camadas
• Usos conhecidos
– Máquinas virtuais
– APIs
MVC – Model-View-Controller
Fonte: Wikipedia
http://en.wikipedia.org/wiki/File:Model
ViewControllerDiagram2.svg
MVC – Model-View-Controller
• Usos conhecidos
– Smaltalk
– MFC(DocumentView)
Referências
• Software Architecture in Practice
• Documenting Software Architectures, Views and
Beyond
• Evaluating Software Architectures, Methods and
Case Studies
• Software Product Lines, Practices and Patterns
• Patterns of Enterprise Application Architecture
• Pattern-Oriented Software Architecture, Série
Wiley – Vol. 1 - 8

Arquitetura de Software