Arquiteturas de Software
Francilene Garcia
Projeto I
2008.2
Conceitos Básicos
Um sistema computacional
Um sistema computacional
isolado…
?
No espaço, ninguém escuta o seu
Stakeholders…
Operador
QA
Consumidor
Arquiteto
Técnico
CEO Cliente
Desenvolvedor
CEO Fornecedor
AdminSys
BillGates
Outros sistemas…
Ativos
Gerador de
Relatórios
Contabilidade
Infra Rede
Cadastros
Labs Estudantes
Oportunidades e riscos…
Venda fraca de sistemas
Impostos
Mercado imaturo
Venda acelerada
de sistemas
Construção de imagem
Entrada na Bolsa
BillGates
Desempenho fraco
Chega tarde ao mercado
Restrições e aspectos críticos…
Falta desenv.
de BD
Sistema
Operacional
Alta oferta de desenv.
Java
Processador + rápido
Legislação
Sistemas Legados
Padrões
Políticas
Ética e meio ambiente
É complicado.
Qual o papel da arquitetura?
?
Leaning tower image from Gary Feuerstein.
Other images from The Big Ball of Mud, by Yoder and Foote.
Ciclo de vida do desenvolvimento
Software
concept
Preliminary
requirements
analysis
Arquitetura define a estrutura do sistema
Design of
architecture and
system core
Primeira release libera o core do sistema
Develop
a version
Deliver a
version
Incorporate
customer
feedback
“The evolutionary delivery lifecycle model”
(Rapid Development, Steve McConnell)
Elicit
customer
feedback
A arquitetura desempenha um papel vital na definição da
estrutura do sistema, desde cedo no ciclo de vida do
desenvolvimento
Vida útil do sistema
Vision
Inception
Development
Deployment
Operation
A arquitetura antecipa decisões que afetam
toda vida útil do sistema
Maintenance
Alteration
Legacy
operation
Death
Definições…
…e formam um
todo que atendem
a expectativas
Um sistema é
um conjunto
de partes
As partes se
relacionam
entre si…
Alguns exemplos…
Antes: Na engenharia, trabalha-se com muitos modelos. Um
modelo é uma representação que abstrai detalhes menos
essenciais, e pode ser manuseada de uma forma que o
“objeto real” não permite.
Boletim Web (Blog)
Presentation
Administration
Forums and
posts
Disponibilidade
Navigation
Segurança
Logic
Posting and
navigation
Administration
Data
Forums and posts
Users and sessions
Uma arquitetura em
3-camadas – muito
utilizada em sistemas
client-server e web
Processamento de imagem
Desempenho
Algorithm
control
Capture
Compression
Recognition
Scaling
Image
storage
Module
scheduler
O processamento tipo
“pipeline” é muito utilizado
em sistemas de tempo real
e embarcados
Portabilidade
Isto é tudo!
• Questões?
Referências e Leituras
Recomendadas
• "An Introduction to Architecture." Chapter 1 of A Software
Architecture Primer, by John Reekie and Rohan
McAdam.
• "Architectural Analysis." Chapter 2 of A Software
Architecture Primer, by John Reekie and Rohan
McAdam.
• Jan Bosch, ``Design of Software Architectures,'' Chapter
2 of Design and Use of Software Architectures: Adopting
and Evolving a Product-line Approach, pp 23--40.
Addison-Wesley, 2000.
• Alistair Cockburn, ``Introduction,'' Chapter 1 of Writing
Effective Use Cases, pp 1--19. Addison-Wesley, 2000.
Análise e Projeto Arquitetural
Arquitetura é arte?
Fatores
contextuais
Arquitetura
desejável
Necessidades
do Cliente
Os clientes devem auxiliar no
projeto da arquitetura
desejável, sem esquecer os
fatores contextuais
Fatores contextuais – para casas
•
•
•
•
•
Clima
Materiais disponíveis
Portabilidade
Riscos
Atividades
“Fatores contextuais”?
isks
“OS-Z não é compatível”
onstraints
nablers
“OS-Z melhora a segurança”
“OS-Z não tem tal facilidade”
São exemplos
de fatores.
Tipos de fatores contextuais
• São buscados em vários lugares:
– Mercado/concorrência
– Empresas
– Tecnologia
– Políticas
“A legislação restringe
falhas …”
“Uma versão
atualizada
de …”
“A forte capacidade de
desenvolvimento Java…”
“O time de
desenvolvimento da
India…”
“Padrão 3576
requer…”
“Esta janela de
oportunidade…”
Decisivos
• Mudança…!
• Estrutura organizacional
• Desempenho do time
Uso de narrativas
• Um caminho
Preciso de um editor que “escute”
informal mas útil
minhas palavras e gere um histórico
com meus discursos…
para descrever
funcionalidades do
sistema através de
cenários
• Cria “personagens”
e conta a “estória”
• Algumas vezes
pode parecer levar à
escrita de casos de
uso
Um exemplo de narrativa
“Pedro está interessado em comparar
paisagens do litoral nordestino com
praias da costa espanhola usando
padrões de fotografia. Ele tem
acumulado e classificado dados nos
últimos cinco anos, exportando-os de
forma que os dados possam ser
manuseados por um pacote estatístico.”
“Pedro” é um pesquisador do INPE.
Requisitos funcionais
• Surgem das necessidades dos stakeholders
• Explicitam quais funcionalidades o sistema deve
prover
• Abordagens variam:
–
–
–
–
Linguagem estruturada (análise de requisitos)
Casos de uso
Modelos formais
Estórias de Uso (XP1)
Requisitos não-funcionais
• Expressados na forma de atributos de
qualidade
• A arquitetura deve identificar, analisar e
suportar a implementação de atributos de
qualidade
Atributos runtime
• Atributos runtime
afetam a execução do
sistema em produção
• Cenários devem ser
descritos com foco
em instâncias
específicas da
execução
Um acrônimo bem utilizado…
erformance
sability
eliability
ecurity
Velocidade do process., utilização de
recursos, tempo de resposta
Impacto de fatores humanos
Taxa de falhas, modos,
severidade, e recuperação
Integridade dos dados,
confidencialidade,
resistência a ataques
São atributos usados para definir
o “guarda-chuva” das qualidades.
Qualidades não ligadas à
execução
• São mais ligadas à
vida útil do sistema
• Cenários são
expressados em
termos de incidentes
que ocorrem durante o
desenvolvimento,
deployment, ou
operação do sistema
Outros acrônimos…
aintainability
volvability
estability
eusability
ntegrity
onfigurability
calability
Algum outro atributo de qualidade?
availability auditability modifiability feasibility
compatibility backwards-compatibility standardscompliance continuity-of-view friendliness
customizability learnability memorability enjoyability
responsiveness schedulability verifiability
analyzability reparability adaptability integrability
interoperability predictability extensibility
dependability safety portability survivability
expendability expandability extensibility
distributability flexibility
Performance
• Pode se manifestar de
diferentes formas:
– Latência
– Rendimento
– Eficiência de memória
• Diferentes métricas de
desempenho devem ser
aplicadas a diferentes
partes do sistema
Usability
• Usabilidade apresenta
vários aspectos:
– Aprendizagem
– Atratividade
– Tempo para completar a
tarefa
– Taxa de erros
• Para um bom resultado,
deve ser analisado por um
perito em usabilidade
Reliability
• Um campo complexo:
Availability =
– Falhas de hardware/software
– Mean time to failure (MTTF)
– Mean time to repair (MTTR)
• Demandas por Reliability
dependem de sua
criticalidade:
– Indesejável
– Perda de receita
– Perda de vida
MTTF
MTTF+MTTR
Reliability
• Conceito varia para sistemas
diferentes:
– Sistemas financeiros podem se
tornar indisponíveis, MAS nenhum
dado pode ser perdido
– Sistemas de Telecom podem
perder dados MAS devem se
recuperar agilmente
– Sistemas de controle devem
manter o controle, em qualquer
situação
• Capacidade de recuperação
Criticality
• Consequência do sistema de falha
– Não-crítica
• Perturba a atividade
– Baixa
• Perda de negóco, mas não séria
– Média
• Perda de longo prazo para o negócio
– Alta
• Prejuízo, perda de vida, etc.
Security
• Todo sistema trata de
alguma maneira:
– Ataque externo (network)
– Fragilidade da política
– Integridade dos dados
• Segurança é onerosa
• Técnicos especializados
podem ajudar
Endereçando atributos de
qualidade
• Narrativas (ou
cenários)
• Comportamento
• Patterns (padrões)
• Estilos
• Táticas
Narrativas
• Uma narrativa ou Preciso de um editor que “escute” minhas
palavras e gere um histórico com meus
cenário que
discursos… a cada 15 minutos de fala
reforça o atributo deve ser gerado um documento
de qualidade
buscado
– Contexto
– Ação
– Resposta
Deve ser mensurável!
Performance
“A consulta no caixa eletrônico
deve gerar um retorno em menos
de 2 segundos.”
Referências e Leituras
Recomendadas
• "Architectural Design." Chapter 3 of A Software
Architecture Primer, by John Reekie and Rohan
McAdam.
• Michael Hirsch, ``Making RUP agile,'' OOPSLA
2002 Practitioners Reports, 2002.
• William J. Brown, Hays W. McCormick III, and
Scott W. Thomas. ``One Size Fits All,'' in
AntiPatterns in Project Management, pp
319--366. John Wiley and Sons, 2000.
• Frederick P. Brooks Jr. The Design of Design.
Turing Award Lecture, 2001.
Visões contempladas na
arquitetura de software
Um elefante…
Um arpão!
É como um
leque!
Uma
parede!
Uma
árvore!
Uma
corda?
Uma cobra!
Baseado numa fábula indiana.
Um sistema de software…
Como vai funcionar a
funcionalidade de
mineração de dados?
Quais as vantagens
estratégicas ?
E as
atividades
de tempo
real?
Vamos ver o
deployment
Visões da arquitetura
Uma visão expressa um aspecto
particular da arquitetura
Visão conceitual
Implementação
Domain-level responsibilities
Execução
Estrutura Build-time
Estrutura Run-time
Alguns autores recomendam a
construção de várias visões… outros
não…
Componentes e conectores
Um componente relaciona
um conjunto de
responsabilidades
Exemplos de responsabilidades:
•PlayBackClipSequence
•SynchronizeWithVideo
•PrefetchClips
Um conector indica a
comunicação entre
componentes
A arquitetura conceitual estrutura o sistema em
termos de responsabilidades no nível do domínio
Interfaces externas
Interfaces
externas
(incluindo
sistemas legados)
Interfaces essenciais
com hardware
Algumas
restrições físicas
do sistema
conhecidas
Nota: Um stakeholder não é um sistema externo!
Projetando uma arquitetura?
Atributos de
qualidade
Requisitos do
negócio
Requisitos
funcionais
Não desista…
Design é um
processo iterativo.
A cada passo,
descobre-se mais
sobre o problema, e
mais ainda sobre a
solução.
Vamos iniciar com
um procedimento
simples…
1. Busque uma narrativa do
sistema
A Sapataria Gomes pretende ter um plano de propaganda utilizando
os mecanismos tradicionais, mas que necessita de um site web para
ser o local central no qual os clientes podem conhecer os modelos e
ordenar calçados com medidas e estilos customizados. Eles também
querem usar o site web como interface de entrada para o sistema
financeiro.
O gerente da Sapataria Gomes explicou:
“O que nós queremos é desenvolver um kit com informações básicas
para envio aos nossos clientes e receber de volta o seu pedido.
Nos últimos anos, nós aprendemos muito sobre como ofertar calçados
customizados e montamos o kit. Assim que recebemos as medidas e
preferências dos clientes, nós podemos fabricar qualquer sapato –
todos customizados – aplicando padrões de material, cores e
acabamentos!”
2. Identifique conceitos chaves
A Sapataria Gomes quer fazer publicidade utilizando meios
convencionais, mas requerem um website como local central no qual
os clientes podem obter informações sobre o kit base, entender os
padrões existentes, e solicitar seu sapato customizado. Eles também
querem usar o website como interface para o sistema financeiro.
O Gerente da Sapataria Gomes disse:
“Queremos dissmeinar o kit base para nossos clientes e receber um
retorno deles. … Nós podemos produzir qualquer sapato aplicando
uma grande variedade de padrões …!”
3. Refine os componentes
Propaganda
- conceito abstrato  X
Website- implementação  ?
Clientes
- stakeholder  Cliente do sistema contábil +
Página personalizada
Faixa de cliente  Diversidade de produto
Kit base  Medidas históricas de clientes
Sapato customizado 
Pedido do sapato

Sistema contábil – sistema externo  Acct I/F
Sapato produzido – sistema externo  Shoe production
Padrões e acabamentos – parte do Kit base
4. Projete e conecte
HTTP
Cliente solicita
Página person.
Medidas dos
clientes
Templates
Acct I/F
Pedido
Página pública
Kit base
Variedade Produtos
Produção calçados
Este é o ponto de partida
Phase 1
Extract
domain
elements
Phase “N”
Restructure
for qualities
Elaborate
functionality
Outras iterações deverão melhorar a arquitetura de
forma a melhor mapear as funcionalidades e os
atributos de qualidade
Refine a arquitetura
• Acrescente ou
quebre
componentes
• Explicite melhor as
responsabilidades
• Identifique os
estereótipos
• Crie os modelos
de dados
• Explore os
comportamentos
Um componente é
um conjunto de
responsabilidades
relacionadas.
Quebre o
componente se as
responsabilidades
não se relacionam
entre si …
MuitoPesada
Devem ser contempladas
as demandas de
desempenho e
disponibilidade
Estereótipos conceituais
• Um componente
tem algum tipo de
responsabilidade
especial?
– Interface
– Armazenamento
persistente
– Tempo de
resposta
Um estereótipo indica que o componente (uma
classe) possui algumas propriedades ou atributos.
Um exemplo de estereótipo
User
Consoles
Audio In
Recording and
Clip Processing
Disk
Recorders
Track and Scene
Construction
Clip and Track
Libraries
Track
Playback
Audio Out
Um diagrama que sintetiza aspectos da
arquitetura. É útil para auxiliar na
compreensão de aspectos mais complexos.
Video Sync
Arquitetura da Sapataria Gomes
com estereótipos
HTTP
Personal
Page
Order
shoes
Public
Page
Customise
shoes
Shoe
production
Acct I/F
Customer
accounts
Browse
products
Templates
Customer
meas.
Product
range
Modelos de dados
• Um modelo de
dados captura a
estrutura
essencial do
dado
– Dados e
conectores
– Dados
persistentes
Student
enrolled-in
0..*
ID : integer
Course
name : String
0..*
currently-taking
0..*
Subject
ID : integer
points : integer
O que é um comportamento
Um sistema
envolve
funcionalidades,
uma estrutura
e comportamentos
• Comportamento reúne um conjunto de ações
que o sistema executa
• Podem ser explorados da seguinte forma:
– Papel a ser desempenhado
– Casos de Uso
– Diagramas de sequência
Como podemos explorar mais?
Viz configuration
Web UI
Viz UI
Update throttle
Webviz data
Update manager
Requested data
Data query
Analyzed data
Analyzer
Discovered data
What to search for
Agent
Database
Visualization data
Visualizer
Viz structuring
Visualization
toolkit
Viz rendering
O sistema deve ter um
comportamento em
resposta a uma atividade
definida nas narrativas
Explore eventos das narrativas
Pedro trabalha na UFCG. Ele prefere
escolher o estilo de calçados. Ele ouviu falar
da Sapataria Gomes e quer experimentar.
Ele navega no site e escolhe alguns
padrões. Ele prefere algo em tons claros de
um couro liso num solado confortável. Ele
preenche dados com suas preferências. Ele
não quer fazer o pedido final ainda, ele
deixa o pedido numa lista de produtos
desejados.
browseWebsite
customiseShoe
saveToWishList
Eventos definem mapas de casos
de uso
• Casos de uso ajudam a
visualizar o fluxo
– Mostra a sequência de
atividades
– Atividade responde a um
evento
– Cada vez que um evento
se dá, exercita-se uma
responsabilidade
EventName
RespA1
RespB3
CompA
CompB
RespC2
CompC
Data
Mapas de caso de uso auxiliam a compreender o comportamento macro
Notação casos de uso
Continuation
SEQ-fork
AND-fork
OR-fork
Sapataria Gomes (1)
BrowseRange
HTTP
Personal
Page
Order
shoes
Public
Page
Customise
shoes
Shoe
production
Acct I/F
Customer
accounts
Browse
products
Templates
Customer
meas.
Product
range
Sapataria Gomes (2)
customiseShoe
HTTP
Personal
Page
Order
shoes
Public
Page
Customise
shoes
Shoe
production
Acct I/F
Customer
accounts
Browse
Uma conexão
é
necessáriaproducts
aqui?
Templates
Customer
meas.
Product
range
O que não fazer…
Um AntiPadrão que ocorre
frequentemente
nas arquiteturas de software…
Um anti-padrão descreve uma solução indesejável para um
conjunto de fatores contextuais recorrentes. Também ajuda a
descrever como refatorar tal situação e obter uma solução
desejável.
Versão object-oriented
• Uma classe
controller rodeada
por classes
simples
• Um procedimento
comum no mundo
OO
• Obtida de
requisitos que
ditam soluções
procedurais
• Um resultado
pobre em termos
de evolução
Simple
Class B
Simple
Class A
Everything Else
Simple
Class C
Simple
Class D
Simple
Class E
Versão arquitetural
• Um aplicação complexa
ou componente lógico
rodeado por componentes
de interface ou dados
• Levam nomes como
“controller” ou “manager”
• Indicam a incapacidade
de decompor o sistema
em função das
responsabilidades
retiradas do domínio
Courses
Personal
page
System
controller
Course
data
User
data
Refatoramento
• Re-design object-oriented
– Rever comportamentos
– Identificar “lumps”
– Agregar classes simples relacionadas
entre si
• Re-design arquitetural
– Identificar todas as responsabilidades
– Obter múltiplos componentes baseados
nas responsabilidades
• Ou ainda:
– Jogar fora e reiniciar
AntiPatterns compilam experiências
do mundo real na forma de
problemas recorrentes & indicam
soluções
Referências e Leituras
Recomendadas
• "Conceptual Architecture." Chapter 4 of A
Software Architecture Primer, by John Reekie
and Rohan McAdam.
• Phillippe Kruchten, " Architectural Blueprints—
The “4+1” View Model of Software Architecture",
in IEEE Software 12 (6) November 1995, pp. 4250.
• R. J. A. Buhr, A. Hubbard,"Use Case Maps for
Engineering Real Time and Distributed
Computer Systems: A Case Study of an ACEFramework Application", in IEEE 1996.
Download

Arquitetura - Computação UFCG