de
So-ware
Parte
II
Centro
de
Inform-ca
-
Universidade
Federal
de
Pernambuco
Sistemas
de
Informao
Vinicius
Cardoso
Garcia
vcg@cin.ufpe.br
Slides
originais
elaborados
por
Ian
Sommerville
O
autor
permite
o
uso
e
a
modicao
dos
slides
para
ns
did-cos
Es=los
Arquiteturais
A
arquitetura
de
um
sistema
pode
aderir
a
um
ou
mais
es=los
arquiteturais
Um
es-lo
dene
os
-pos
de
elementos
que
podem
aparecer
em
uma
arquitetura
e
as
regras
que
regem
a
sua
interconexo
Esses
es-los
pode
simplicar
o
problema
de
denio
de
arquiteturas
de
sistema.
A
maioria
dos
sistemas
de
grande
porte
adere
a
vrios
es-los
Es-los
arquiteturais
=
modelos
arquiteturais
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
3
Organizao
de
sistema
Reete
a
estratgia
bsica
que
usada
para
estruturar
um
sistema
Exemplos:
O
es-lo
de
repositrio
de
dados
compar-lhados;
Es-lo
de
servios
e
servidores
compar-lhados;
Es-lo
de
mquina
abstrata
ou
em
camadas
Orientado
a
objetos
(ou
Objetos
Distribudos)
Pipes
and
Filters
ou
Pipelining
Es=lo
de
repositrio
Sistemas
cujas
partes
precisam
trocar
dados
com
frequncia:
Dados
compar-lhados
podem
ser
man-dos
em
um
banco
de
dados
central
e
acessados
por
todos
os
subsistemas
Cada
subsistema
mantm
seu
prprio
banco
de
dados
e
passa
dados
para
outros
subsistemas
Podem
usar
uma
abstrao
de
repositrio
centralizado
Implementao
distribuda
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 8
Desvantagens
Os
subsistemas
devem
estar
de
acordo
com
um
modelo
de
dados
padronizado
A
evoluo
de
dados
dipcil
e
dispendiosa;
Diculdade
para
distribuir
de
forma
eciente.
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
9
Es=lo
Cliente-Servidor
Mostra
como
dados
e
processamento
so
distribudos
por
uma
variedade
de
componentes.
Servidores
independentes
que
fornecem
servios
tais
como
impresso,
transferncia
de
arquivos,
gerenciamento
de
dados,
etc.
Clientes
u-lizam
esses
servios.
Clientes
e
servidores
normalmente
se
comunicam
atravs
de
uma
rede
Diversas
tecnologias
de
comunicao
so
possveis
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
10
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 11
Desvantagens
fcil
adicionar
novos
servidores
ou
atualizar
servidores
existentes.
Gerenciamento
redundante
em
cada
servidor;
Nenhum
registro
central
de
nomes
e
servios
pode
ser
dipcil
descobrir
quais
servidores
e
servios
esto
disponveis
Requisies
e
respostas
casadas
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
12
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 14
Desvantagens
Duplicao
de
funcionalidade
s
vezes
dipcil
estruturar
um
sistema
atravs
de
camadas
comum
que
a
estruturao
seja
violada
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 17
Desvantagens
Mudanas
de
interface
tm
alto
impacto
No
envolve
restries
topolgicas,
o
que
pode
dicultar
a
manuteno
Dependncias
entre
objetos
no
so
limitadas
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
18
-l
para
aplicaes
de
processamento
de
informao
que
interagem
pouco
com
usurios
Variao
distribuda:
processamento
de
streams
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
19
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 20
Desvantagens
Requer
um
formato
comum
para
a
transferncia
de
dados
ao
longo
do
pipeline
No
apropriado
para
aplicaes
intera-vas
Mais
especicamente:
s
apropriado
para
realizar
processamento
sequencial
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
21
Fluxo
de
Controle
Es-los
arquiteturais
relacionados
com
o
uxo
de
controle
entre
os
componentes
arquiteturais
Controle
centralizado
Um
subsistema
tem
responsabilidade
global
pelo
controle
e
inicia
e
pra
outros
sistemas
Controle
centralizado
Um
componente
responsvel
pelo
gerenciamento
da
execuo
de
outros
componente.
O
es-lo
Chamada-Retorno
Controle
se
inicia
no
topo
de
uma
hierarquia
de
subro-nas
e
move-se
para
baixo
na
hierarquia.
Pode
ser
sequencial
ou
concorrente
O
es-lo
de
Gerenciador
Aplicvel
a
sistemas
concorrentes
e
de
tempo
real
Um
componente
controla
a
parada,
o
incio
e
a
coordenao
de
outros
processos
de
sistema
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
23
Chamada-Retorno
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 24
Comunicao entre o Controlador e os outros componentes pode ser baseada em eventos, chamadas de procedimentos, etc.
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 25
Es-lo
Publisher/Subscriber
Eventos
so
transmi-dos
a
todos
os
componentes.
Qualquer
componente
interessado
pode
respond-los
Modelo
Publisher/Subscriber
efe-vo
na
integrao
de
componentes
em
computadores
diferentes
em
uma
rede
Desacoplamento
espacial
e
temporal
Componentes
no
sabem
se
um
evento
ser
tratado
e
nem
quando
ser.
Alguns
componentes
(publishers)
publicam
eventos
Componentes
(subscribers)
registram
interesse
em
eventos
especcos
e
podem
trat-los
A
pol-ca
de
controle
no
embu-da
no
tratador
de
eventos
e
mensagens
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
27
Publisher/Subscriber
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 28
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 30
Arquiteturas
de
Referncia
Derivadas
de
um
estudo
de
domnio
de
aplicao,
ao
invs
de
sistemas
existentes.
Podem
ser
usadas
como
base
para
a
implementao
de
sistemas
(no
o
uso
principal)
ou
comparao
de
sistemas
diferentes.
Atua
como
um
padro
com
relao
ao
qual
os
sistemas
podem
ser
avaliados.
Exs.
Modelo
OSI
para
sistemas
de
comunicao
Organizao
tradicional
de
compiladores
em
vanguarda
e
retaguarda
(e
seus
elementos
internos)
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
31
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 11 [if977] Engenharia de SoOware - SI - CIn - UFPE 32
Arquitetura de um Compilador
33
Princpios
Quais
princpios
arquiteturais
voc
j
viu
aplicados
a
projetos
de
soOware?
35
Princpios
Arquitetura
em
camadas,
sem
regras
de
negcio
nas
vises
(apresentao),
interfaces,
injeo
de
dependncia,
alta
coeso,
baixo
acoplamento,
ACID
(Atomicidade,
Consistncia,
Isolamento
e
Durabilidade),
componentes
stateless,
modelo
de
domnio
limpo,
sempre
use
stored
procedures,
nunca
use
stored
procedures,
no
reinvente
a
roda,
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
36
Princpios
ATENO!
Princpios
so
muito
bons,
mas
tenha
certeza
deles
serem
realistas
e
no
tenham
um
impacto
nega-vo
na
arquitetura
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
37
38
39
Maior
exibilidade
Estrutura
do
sistema
pode
mudar
em
tempo
de
execuo
Maior
coeso
Classes
mais
focadas
em
um
nico
obje-vo
40
42
PIOR!
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
43
Funcionrio Funcionrio
Gerente
Vendedor
44
Funcionrio Funcionrio
Gerente
Vendedor
Classes devem encapsular informao que manipulada em conjunto e que evolui em conjunto
45
Padres
de
Projeto
Escritores
de
livros,
histrias
em
quadrinhos
e
roteiros
raramente
inventam
novas
histrias
Idias
frequentemente
so
reusadas
Heri
Trgico
=>
Hamlet,
Macbeth
An--Heri
=>
Aquiles,
Sawyer,
Lobo
47
Denio
de
Alexander
... describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice
Alexander, Christopher, Sara Ishikawa and Murray Silverstein A Pattern Language: Towns. Buildings, Construction. Oxford University Press, USA, 1977.
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
48
Padres
organizacionais
Padres
de
anlise
Padres
arquiteturais
=>
Es=los
Arquiteturais
Padres
de
implementao
=>
Idioms
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
49
Padres no
52
53
55
56
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 18 [if977] Engenharia de SoOware - SI - CIn - UFPE 57
Padro Observer
Nome:
Observer.
Descrio
do
problema:
necessrio
representar
um
mesmo
conjunto
de
dados
de
diversas
maneiras,
de
modo
que
mudanas
nesses
dados
se
reitam
em
todos
os
modos
de
exibio
Descrio
da
soluo:
Mecanismo
para
que
o
display
seja
no'cado
de
modicaes
no
estado
sem
que,
para
isso,
o
estado
precise
conhec-lo
Consequncias:
Estado
e
display
desacoplados
fcil
atualizar
tanto
um
display
quanto
vrios
displays
Invocaes
implcitas
podem
resultar
em
erros
de
programao
dipceis
de
rastrear
Exige
cdigo
extra
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
58
O Padro Observer
Ian Sommerville, Engenharia de SoOware, 8. edio. Captulo 18 [if977] Engenharia de SoOware - SI - CIn - UFPE 59
Usos
Conhecidos
AWT
do
Java
Development
Kit
Diversas
partes
da
implementao
da
plataforma
Eclipse
Um
grande
nmero
de
arcabouos
modernos
para
a
construo
de
interfaces
com
o
usurio
60
O
Padro
Strategy
Nome:
Strategy
Descrio
do
problema:
Dependendo
do
contexto,
necessrio
usar
algoritmos
diferentes
para
resolver
um
problema,
embora
seja
desejvel
no
ter
que
modicar
esse
contexto
por
causa
do
algoritmo
empregado
Descrio
da
soluo:
Denir
uma
interface
para
todos
os
algoritmos
e
fazer
com
que
o
contexto
conhea
apenas
essa
interface,
no
suas
implementaes
Consequncias:
Separa
contexto
e
cliente
das
implementaes
do
algoritmo
Contexto
no
est
ciente
da
estratgia
usada;
o
cliente
congura
o
contexto
Strategies
podem
ser
subs-tudas
em
tempo
de
execuo
Normalmente
mais
efe-vo
se
usado
junto
com
uma
Factory
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
61
Padro Strategy
62
O
Padro
Composite
Nome:
Composite
Descrio
do
problema:
Dados
que
o
programa
precisa
manipular
podem
ser
tanto
elementos
atmicos
quanto
grupos
de
elementos
(podendo
conter,
inclusive,
outros
grupos).
O
programa
deveria
tratar
esses
itens
de
maneira
uniforme
Descrio
da
soluo:
Denir
uma
interface
compar-lhada
tanto
por
itens
atmicos
quanto
por
grupos
de
elementos
e
fazer
com
que
o
programa
lide
com
ela,
sem
saber
se
o
objeto
subjacente
atmico
ou
um
grupo
Consequncias:
Trata
todos
os
componentes
do
mesmo
jeito,
independentemente
da
complexidade
Novos
-pos
de
componentes
podem
ser
includos
com
facilidade
Pode
exigir
um
nmero
grande
de
objetos
63
Padro Composite
64
O
Padro
Iterator
Nome:
Iterator
Descrio
do
problema:
necessrio
separar
as
operaes
que
sero
realizadas
sobre
uma
ou
mais
estruturas
de
dados
da
maneira
como
essas
estruturas
de
dados
sero
percorridas
Descrio
da
soluo:
Denir
uma
interface
padro
para
percorrer
estruturas
de
dados
em
geral
e
fazer
com
que
seus
usurios
vejam
apenas
a
interface
e
no
a
maneira
como
a
estrutura
de
dados
percorrida
Consequncias:
Independncia
entre
a
estrutura
de
dados
e
a
maneira
de
percorr-la
Ml-plos
iteradores
=>
ml-plas
maneiras
de
percorrer
uma
estrutura
de
dados
Comunicao
extra
entre
o
iterador
e
a
estrutura
Modicaes
estrutura
podem
criar
inconsistncias
65
Padro Iterator
66
O
Padro
Faade
Nome:
Faade
Descrio
do
problema:
necessrio
disponibilizar
uma
interface
nica
simplicada
para
um
conjunto
das
funcionalidades
(interfaces)
de
uma
API
ou
subsistema,
por
exemplo.
Descrio
da
soluo:
Implementar
um
Facade
demanda
denir
um
conjunto
de
operaes
reduzidas
que
permita
ocultar
a
complexidade
inerente
u-lizao
de
vrias
classes
de
um
subsistema
(adaptado
[SoOware
Design
Paerns,
2005]).
Consequncias:
Esconde
do
cliente
os
componentes
do
subsistema
Reduz
o
nmero
de
objetos
que
os
clientes
lidam;
Torna
o
subsistema
mais
fcil
de
usar;
Fraco acoplamento entre subsistema e seus clientes; No impede que aplicaes usem classes do subsistema, caso elas precisem;
67
O Padro Faade
Faade
68
O Padro Faade
Fonte:
hp://www.pg.cefetpr.br/coinf/simone/paerns/facade.php
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
69
70
Bibliograa
SOMMERVILLE,
I.
Engenharia
de
SoOware.
9.
Ed.
So
Paulo:
Pearson
Educa-on,
2011
Captulos
11
a
14
e
18
Erich
Gamma,
Richard
Helm,
Ralph
Johnson,
John
Vlissides.
Design
Pakerns:
Elements
of
Reusable
Object-Oriented
So-ware.
1
ed.
Estados
Unidos
da
Amrica:
Addison-Wesley,
1995.
[if977]
Engenharia
de
SoOware
-
SI
-
CIn
-
UFPE
71