Você está na página 1de 57

Arquitetura de Software I

Hyggo Oliveira de Almeida


Laboratrio de Sistemas Embarcados e Computao Pervasiva
Centro de Engenharia Eltrica e Informtica
Universidade Federal de Campina Grande

Apresentao do curso
Motivao para o curso
Objetivos do curso
Contedo
Resultado esperado
Bibliografia
Dvidas???

Motivao para o curso


Na ltima disciplina vocs viram RUP
Processo centrado na arquitetura

Arquitetura desempenha papel fundamental no


processo de desenvolvimento
Riscos
Custos
Desempenho
Flexibilidade

Ps-Engenharia de Software - FAT

Motivao para o curso


Problemas na arquitetura acarretam problemas no
projeto e implementao
Corrigir a arquitetura custa caro!

Definir uma arquitetura adequada pode ser


determinante para o sucesso do software
Aprendemos anteriormente como aplicar um
processo de desenvolvimento de software...
... agora discutiremos como especificar, documentar
e avaliar uma arquitetura de software!
Ps-Engenharia de Software - FAT

Objetivo do curso
Introduzir o conceito de Arquitetura de Software
Principais elementos
Estilos e vises
Documentao com UML
Atributos de qualidade

Ps-Engenharia de Software - FAT

Contedo do curso (Mdulo I)


O que arquitetura de software?
Motivao e benefcios
Conceitos
Vises arquiteturais
Descrevendo arquiteturas com UML
Estilos arquiteturais

Ps-Engenharia de Software - FAT

Contedo do curso (Mdulo II)


Atributos de qualidade
Seleo de estilos
Seleo de vises
Rastreabilidade bidirecional

Ps-Engenharia de Software - FAT

Ao terminar o curso vocs


devem...
Saber o que uma arquitetura de software
Conhecer os principais conceitos
Entender o uso de estilos arquiteturais
Saber documentar arquiteturas com UML
Definir atributos de qualidade de arquiteturas

Ps-Engenharia de Software - FAT

Exemplo base
Definam grupos (Mximo 4 pessoas)
Cada grupo far uma descrio textual de um
software
De preferncia algo que j tenha sido ou est sendo
desenvolvido na empresa
Nvel razovel de complexidade
Calculadora e agenda no valem!!!

Ps-Engenharia de Software - FAT

Bibliografia
Livros
Beyond Software Architecture, Luke Hohmann, Addison Wesley, 2003
Software Architecture: Perspectives on an Emerging Discipline, Mary Shaw,
David Garlan, Prentice Hall, 1996
Software Architecture in Practice, Second Edition, Len Bass, Paul Clements, Rick
Kazman, Addison Wesley, 2003
The Art of Software Architecture, Stephen T. Albin, John Wiley & Sons, 2003
Pattern-Oriented Software Architecture, Volume 3, Michael Kircher and Prashant
Jain, John Wiley & Sons, 2004
UML Guia do usurio, James Rambaugh, Campus, 2000

Ps-Engenharia de Software - FAT

10

Dvidas sobre o curso???


Dvidas sobre o contedo...
s isso???
Isso tudo professor?!?
E vai dar tempo???

Meu e-mail de contato:


hyggo@dee.ufcg.edu.br

Ps-Engenharia de Software - FAT

Mdulo I

11

O que arquitetura de software?


Motivao e benefcios
Conceitos
Vises arquiteturais
Descrevendo arquiteturas com UML
Estilos arquiteturais

O que Arquitetura?
Arquitetura como um processo
A arte ou cincia de construir edificaes de quaisquer
tipos para uso humano
A ao ou processo de construir
O mtodo ou estilo especial que direciona os detalhes da
estrutura e ornamentao de uma construo

Arquitetura como um artefato


Trabalho arquitetural: estrutura, construo
Construo ou estrutura em geral
Fonte: Dicionrio Webster
Ps-Engenharia de Software - FAT

13

O que Arquitetura de Software?


Muitas definies...
...conjunto de elementos arquiteturais (ou de projeto) que tm uma forma particular.
Perry and Wolf, 1992
...estrutura(s) do sistema, que compreende(em) a componentes de software, as
propriedades externamente visveis desses componentes, e os relacionamentos
entre eles. Clements et al., 1997
"...especificao abstrata do sistema consistindo primeiramente de componentes
funcionais descritos em termos de seus comportamentos, interfaces e interconexes
entre componentes." Hayes-Roth, 1994
"Arquitetura de software o estudo da estrutura em larga escala e desempenho de
sistemas de software" Lane, 1990
"A arquitetura de um sistema complexo seu estilo e mtodo de projeto e
construo" Hayes-Roth, 1995
...estrutura de suporte de um sistema Rechtin, 1992
"...estrutura de sistema que consiste de mdulos ativos, um mecanismo para permitir
interao entre estes mdulos e um conjunto de regras que governam a interao"
Boasson, 1995
Ps-Engenharia de Software - FAT

14

O que Arquitetura de Software?


...resumindo

Elementos em comum...
Descrio dos componentes principais
Relacionamentos e interaes entre componentes
Omite informao sobre o contedo dos
componentes no relacionada a suas interaes
O comportamento dos componentes uma parte da
arquitetura enquanto possa ser discernido do ponto
de vista de outro componente
A arquitetura define uma lgica por trs dos
componentes e da estrutura
Ps-Engenharia de Software - FAT

15

O que Arquitetura de Software?


Rational Software

Arquitetura de Software tambm envolve


Funcionalidade
Usabilidade
Desempenho
Reso
Facilidade de compreenso
Restries e equilbrio de fatores econmicos e
tecnolgicos

Ps-Engenharia de Software - FAT

16

O que Arquitetura de Software?


Restringindo projeto e implementao
A arquitetura envolve um conjunto de decises de design, regras ou
padres que restringem o projeto e a implementao

arquitetura
projeto
implementao
Cdigo

As decises de arquitetura so
as mais fundamentais e alterlas provoca efeitos colaterais
significativos.

Ps-Engenharia de Software - FAT

17

O que Arquitetura de Software?


Sistemas de software x Sistemas fsicos

x
Ps-Engenharia de Software - FAT

18

O que Arquitetura de Software?


Sistemas de software x Sistemas fsicos

Vocs j imaginaram no caos existente se...

...cassem avies na mesma proporo em


que softwares travam?
Ps-Engenharia de Software - FAT

19

O que Arquitetura de Software?


Sistemas de software x Sistemas fsicos
Sistemas fsicos maduros tm arquitetura estvel: avies,
automveis, navios, pontes, etc.

Essas arquiteturas evoluram ao longo do tempo


Tentativa e erro
Reso e refinamento de solues de sucesso
Avaliao quantitativa com mtodos analticos
Ps-Engenharia de Software - FAT

20

10

O que Arquitetura de Software?


Sistemas de software x Sistemas fsicos

Natureza temporal
Estado e comportamento complexo, difcil de analisar
Capacidade de auto-modificao e de evoluo

Ps-Engenharia de Software - FAT

21

O que Arquitetura de Software?


Sistemas de software x Sistemas fsicos

Invisibilidade

x
Ps-Engenharia de Software - FAT

22

11

O que Arquitetura de Software?


Sistemas de software x Sistemas fsicos

Custo de replicao da produo mais barato

E a facilidade de piratear tambm!


J imaginou como piratear um prdio???

Ps-Engenharia de Software - FAT

23

O que Arquitetura de Software?


Concepes errneas

Arquitetura e projeto so a mesma coisa


Arquitetura e infra-estrutura so a mesma
coisa
Arquitetura plana e expressa por um nico
diagrama
A arquitetura no pode ser medida ou
validada

Ps-Engenharia de Software - FAT

24

12

O que Arquitetura de Software?


Concepes errneas

Arquitetura e projeto so a mesma coisa


A arquitetura um aspecto do projeto, focada em
elementos que so importantes estruturalmente
elementos que tm impacto significativo em desempenho,
confiabilidade, custo, adaptabilidade, etc.

A arquitetura no diz respeito ao projeto detalhado


de componentes individuais
Tema da prxima disciplina

Ps-Engenharia de Software - FAT

25

O que Arquitetura de Software?


Concepes errneas

Arquitetura = infra-estrutura
Infra-estrutura parte integral e importante
da arquitetura
A arquitetura define interoperabilidade entre
a infra-estrutura e os componentes da
aplicao
Arquitetura aborda estrutura, decomposio,
interfaces, etc.
Ps-Engenharia de Software - FAT

26

13

O que Arquitetura de Software?


Concepes errneas

Arquitetura = infra-estrutura
Arquitetura aborda...
Aspectos dinmicos
Argumentao lgica
Adequao ao contexto
Contexto de negcio
Contexto de desenvolvimento

Ps-Engenharia de Software - FAT

27

O que Arquitetura de Software?


Concepes errneas

Arquitetura plana e expressa por um nico


diagrama
A arquitetura plana apenas em casos muito triviais
A arquitetura tem muitas dimenses, que
representam mltiplas questes de mltiplos
stakeholders
Usar um nico diagrama para representar todas as
dimenses da arquitetura leva sobrecarga
semntica (leia-se confuso)
Arquitetura requer mltiplas vises
Ps-Engenharia de Software - FAT

28

14

O que Arquitetura de Software?


Concepes errneas

A arquitetura no pode ser medida ou


validada
Arquiteturas podem ser sistematicamente
avaliadas contra requisitos de qualidade e
funcionais, riscos e atributos chave do
sistema
Revisando os artefatos da arquitetura
Testando os prottipos da arquitetura
Ps-Engenharia de Software - FAT

29

Motivao e benefcios
Por que arquitetar?

Integridade e qualidade do sistema


Controle da complexidade
Previsibilidade
Testabilidade
Reso
Comunicao
Organizao e gerncia de projetos

Ps-Engenharia de Software - FAT

30

15

Motivao e benefcios
Integridade e qualidade do sistema

A arquitetura propicia integridade conceitual e


qualidade ao sistema, ao mesmo tempo em que
permite mudanas
Funcionalidade requerida
Atributos de qualidade
Novos requisitos
Requisitos modificados
Tendncias tecnolgicas

A arquitetura propicia longevidade ao sistema


Facilidade de evoluo
Escalabilidade
Ps-Engenharia de Software - FAT

31

Motivao e benefcios
Controle da complexidade

Dividir para conquistar


Decomposio em componentes
Detalhes de implementao ocultos

Separao de reas de interesse


Componentes (e camadas) encapsulam detalhes
Componentes distintos podem ser
implementados por pessoas com especialidades
diferentes
Ps-Engenharia de Software - FAT

32

16

Motivao e benefcios
Previsibilidade

Previsibilidade do processo
Prottipos da arquitetura permitem coletar
mtricas
Mtricas de custo do desenvolvimento
Mtricas de cronograma

Previsibilidade comportamental
Iteraes da arquitetura removem maiores riscos

Ps-Engenharia de Software - FAT

33

Motivao e benefcios
Testabilidade

Sistemas adequadamente componentizados


suportam maior e melhor
Diagnstico de problemas
Rastreabilidade
Deteco de erros

Ps-Engenharia de Software - FAT

34

17

Motivao e benefcios
Reso
A arquitetura define regras de substituio
Interfaces entre componentes definem limites de
substituio
A arquitetura propicia diferentes granularidades de
reso
Reso em pequena escala, no nvel de componentes
Reso em larga escala
Subsistemas
Produtos
Frameworks
Ps-Engenharia de Software - FAT

35

Motivao e benefcios
Comunicao

A arquitetura auxilia a comunicao entre


stakeholders
Vises distintas endeream questes de
stakeholders distintos
A arquitetura comunica decises chave de
projeto

Ps-Engenharia de Software - FAT

36

18

Motivao e benefcios
Organizao e gerncia de projetos

Estrutura organizacional alinhada com a arquitetura


Equipe(s) de desenvolvimento
Subcontratados

Componentes / subsistemas utilizados como


unidades para
Desenvolvimento
Gerncia de configurao
Teste
Implantao e evoluo

Componentes / subsistemas desenvolvidos


concorrentemente
Ps-Engenharia de Software - FAT

37

Motivao e benefcios
Evitar ou reduzir custos

Minimizar o custo de (re)trabalho


Economias com o reso
Reso de componentes
Desenvolvimento de componentes reutilizveis

Economias com a utilizao efetiva de recursos do


projeto
Economias com estimativas de custo / cronograma
mais precisas
Economias com manuteno aprimoradas

Ps-Engenharia de Software - FAT

38

19

Motivao e benefcios
Evitar ou reduzir custos

O investimento em arquitetura ocorre nas


fases iniciais do desenvolvimento
Concepo
Elaborao

Modelos de estimativa de custo so


imprecisos nas fases iniciais
Os benefcios da arquitetura ocorrem durante
a implementao e manuteno
Ps-Engenharia de Software - FAT

39

Motivao e benefcios
Evitar ou reduzir custos

A gerncia sempre muito relutante em


bancar custos nas fases iniciais do projeto
Arquiteturas robustas so mais crticas se a
complexidade do projeto, criticalidade e
tamanho so grandes
Boa arquitetura ajuda a estimar e a controlar
os custos do projeto
A longo prazo, no arquitetar o sistema pode
ser muito caro
Ps-Engenharia de Software - FAT

40

20

Exerccio
Com sua experincia atual de desenvolvimento
de software, projete a arquitetura do software
definido anteriormente.

Ps-Engenharia de Software - FAT

41

Conceitos
Acoplamento
Coeso
Interface
Componentes
Conectores
Estilo arquitetural
Padres de projeto
Viso arquitetural

Ps-Engenharia de Software - FAT

42

21

Conceitos
Acoplamento
Grau de interconexo entre diferentes pedaos de um
sistema
Pedaos menos acoplados so mais fceis de entender,
testar, reusar e manter
Baixo acoplamento tambm promove o paralelismo de
implementao

Alto
Acoplamento
(efeito cascata)

Ps-Engenharia de Software - FAT

43

Conceitos
Coeso

Quo proximamente so relacionadas as atividades


dentro de um nico pedao (componente) ou entre
um grupo de padaos?
Componentes altamente coesos = relacionados a apenas
UMA funcionalidade
Impresso

Relatrio

Alta coeso

Impresso
Relatrio
Interface

Baixa coeso
Interface
Ps-Engenharia de Software - FAT

44

22

Conceitos
Interface
As maneiras em que subsistemas dentro
de um projeto maior interagem so
claramente definidas.
Idealmente, interaes so especificadas
de um modo que possam se manter
relativamente estveis ao longo do ciclo
de vida do sistema.
Um modo de alcanar isso atravs de
abstraes sobre a implementao
concreta.

Ps-Engenharia de Software - FAT

45

Conceitos
Interface
Exemplo clssico: tomada!

Interface bem definida


Ps-Engenharia de Software - FAT

46

23

Conceitos
Interface
Exemplo clssico: tomada!

Abstrao sobre...

... a implementao concreta

Ps-Engenharia de Software - FAT

47

Conceitos
Componentes
Unidades de distribuio, montagem, implantao e
substituio
Executam funcionalidade no trivial
Um componente definido pelos servios que prov e
pelos servios que requer
Os servios revelam o comportamento at onde necessrio para
a montagem (assembly)

No necessariamente uma nica unidade de cdigo ou


um nico executvel

Ps-Engenharia de Software - FAT

48

24

Conceitos
Conectores
Veculos de comunicao entre componentes
Descrio das interaes entre componentes

Exemplos de conectores:
Chamadas de procedimento
Anncios de eventos
Protocolos de comunicao
Invocaes de servios

Ps-Engenharia de Software - FAT

49

Conceitos
Estilo ou padro arquitetural

Vocabulrio de tipos de componentes e conectores

+
Conjunto de restries sobre como eles podem ser
combinados
Exemplos:
Cliente-Servidor, Pipes and Filters, Model-View-Controller,
Broker

Ps-Engenharia de Software - FAT

50

25

Conceitos
Padres de projeto

Solues de projeto de baixo nvel


Classes, objetos...

Mais detalhada
Viso interna dos componentes da arquitetura

Assunto para a prxima disciplina


Arquitetura de Software II

Ps-Engenharia de Software - FAT

51

Conceitos
Viso arquitetural

Projeo de um modelo da arquitetura sob


determinada perspectivas
Diferentes vises para diferentes stakeholders

Viso

Modelo

Stakeholder
Ps-Engenharia de Software - FAT

52

26

Conceitos
Viso arquitetural

Modelo
Uma descrio completa de um sistema sob uma
perspectiva particular e um nvel especfico de
abstrao

Viso
Uma projeo de um modelo, que visto sob
uma determinada perspectiva, e omite entidades
que no so relevantes a essa perspectiva
Ps-Engenharia de Software - FAT

53

Conceitos
Viso arquitetural

Cliente

Arquiteto

Ps-Engenharia de Software - FAT

54

27

Conceitos
Viso arquitetural

Cliente

Arquiteto

Ps-Engenharia de Software - FAT

55

Exerccio
Revisem e atualizem a arquitetura definida
anteriormente considerando os conceitos
aprendidos.
Vocs j viram UML...
Considerem diferentes stakeholders
Arquiteto
Desenvolvedor
Cliente

Ps-Engenharia de Software - FAT

56

28

Vises arquiteturais
Modelo 4+1 (Rational Software)

Viso
Lgica

Viso de
Desenvolvimento
Cenrios

Viso de
Processo

Viso
Fsica

Ps-Engenharia de Software - FAT

57

Vises arquiteturais
Lgica

Viso Lgica
Retrato esttico dos relacionamentos existentes entre as
entidades do sistema
Pode possuir duas ou mais representaes, dentre elas,
uma conceitual e outra de esquema de banco de dados

Viso
Lgica

Ps-Engenharia de Software - FAT

58

29

Vises arquiteturais
Processo

Viso de Processo
Descreve aspectos de sincronizao e concorrncia
Descrio de processos concorrentes
Diferentes linhas de execuo (threads), entidades ativas

Viso de
Processo

Ps-Engenharia de Software - FAT

59

Vises arquiteturais
Desenvolvimento

Viso de Desenvolvimento
Descreve a organizao do software em seu ambiente de
desenvolvimento
Componentes
Linguagens

Viso de
Desenvolvimento

Ps-Engenharia de Software - FAT

60

30

Vises arquiteturais
Fsica

Viso Fsica
Descreve o mapeamento do software para o hardware
Distribuio de componentes
Verificao de alta disponibilidade, confiabilidade,
desempenho...
Tambm chamada deployment
Viso
Fsica

Ps-Engenharia de Software - FAT

61

Vises arquiteturais
Cenrios (+1)

Cenrios (+1)
Cenrios de funcionamento do sistema diretamente
ligados arquitetura
Principais casos de uso
Lembram de RUP?
Centrado em arquitetura!

Cenrios

Ps-Engenharia de Software - FAT

62

31

Descrevendo arquiteturas com UML


De acordo com o que foi estudado na disciplina
anterior, que diagramas UML poderiam ser usados
para descrever cada uma das vises?

Ps-Engenharia de Software - FAT

63

Descrevendo arquiteturas com UML


Cenrios
No definem a estrutura do sistema
So necessrios para entender como o sistema trabalha e
por que a arquitetura como
Medir tempo
para uma
atividade

Desenvolvedor

Gerente

Extrair
planilhas de
tempo
semanais
Consolidar
dados do
projeto

Assitente
administrativo

Configurar
Ps-Engenharia
Software - FAT
banco dededados

64

e ferramenta

32

Descrevendo arquiteturas com UML


Descries textuais dos casos de uso e seqncia de
eventos
Caso de uso: Medir tempo para uma atividade
Atores: Desenvolvedor
Descrio: O desenvolvedor solicita ao sistema que uma
nova atividade seja registrada de acordo com seu tempo de
durao.
Seqncia de aes
Ator

Sistema

1. O desenvolvedor determina o
nome e o tempo de durao da
atividade e encaminha ao sistema.
2. O sistema armazena a
informao e retorna OK para o
desenvolvedor.
3. O desenvolvedor recebe
OK do
Ps-Engenharia de Software - FAT
sistema

65

Descrevendo arquiteturas com UML


Viso Lgica
Qual a composio lgica do sistema?
Quais responsabilidades foram atribudas aos diferentes
elementos do sistema?
Qual o agrupamento lgico dos elementos do sistema?

Ps-Engenharia de Software - FAT

66

33

Descrevendo arquiteturas com UML


Viso Lgica
Estrutura
Diagramas de Pacotes
Parties maiores (pacotes)

Diagramas de Classes
Elementos de design significativos para a arquitetura
(classes, subsistemas, interfaces) e relacionamentos
entre eles

Ps-Engenharia de Software - FAT

67

Descrevendo arquiteturas com UML


Viso Lgica
Diagramas de Pacotes

Interface
Grfica

Cronmetro

Ps-Engenharia de Software - FAT

68

34

Descrevendo arquiteturas com UML


Viso Lgica
Diagramas de Classes
Usuario
nome: String

Assistente

Desenvolvedor

Gerente

Atividade
nome: String
duracao: int
data: Date

*
ListaDeDesenvolvedores
Ps-Engenharia de Software - FAT

69

Descrevendo arquiteturas com UML


Viso Lgica
Comportamento
Diagramas de interao (seqncia e colaborao)

:Atividade

Desenvolvedor

:Desenvolvedor

criar(Teste)
setDuracao(120)
registrar(atividade)
ok
Ps-Engenharia de Software - FAT

70

35

Descrevendo arquiteturas com UML


Viso Lgica
Comportamento
Diagramas de interao (seqncia e colaborao)
4:consolidarPlanilha()
:ListaDe
1:extrairPlanilhaGeral() Desenvolvedores

5:planilhaGeral

3:planilha

2:extrairPlanilha()
:Desenvolvedor

2.2:nome
2.4:duracao

Gerente/Assitente

2.1:getNome()
2.3:getDuracao()

:Atividade
Ps-Engenharia de Software - FAT

71

Descrevendo arquiteturas com UML


Viso de Processo
Quais as entidades ativas do sistema?
Quais threads de controle eles implementam (executam
em)?
Quais os mecanismos de projeto necessrios para
suportar comunicao entre objetos?

Ps-Engenharia de Software - FAT

72

36

Descrevendo arquiteturas com UML


Viso de Processo
Diagramas de Classes
Classes ativas <<process>> e <<thread>>
Relacionamentos de comunicao interprocessos
(IPC)
Tantos diagramas de classes quanto necessrio

Ps-Engenharia de Software - FAT

73

Descrevendo arquiteturas com UML


Viso de Processo

IPC
(HTTP)

Usuario

<<thread>>
Notificador

nome: String

Assistente

Gerente

Desenvolvedor

<<process>>
SendMail

Atividade
nome: String
duracao: int
data: Date

ListaDeDesenvolvedores
Ps-Engenharia de Software - FAT

74

37

Descrevendo arquiteturas com UML


Viso de Processo
Comportamento
Diagramas de Interao (seqncia ou
comunicao) mostrando IPC
Instncias ativas
Comunicao

Diagramas de atividades
Pelo menos um diagrama por processo

Ps-Engenharia de Software - FAT

75

Descrevendo arquiteturas com UML


Viso de Processo
Diagrama de atividades (Notificador)
Incio

[tempo>3]

Verificar
cronmetro

Notificar
usurio

[tempo<=3]

Cancelar
Tarefa

Enviar
Email

Finalizar
Ps-Engenharia de Software
- FAT
ciclo

76

Fim

38

Descrevendo arquiteturas com UML


Viso de Desenvolvimento
Quais os elementos que implementam a instanciao de
execuo do sistema?
De onde eles vm (desenvolvimento interno, compra,
etc.)?
Quais as linguagens de programao, tcnicas,
ferramentas, etc., usadas para criar esses elementos?
Quais as competncias requeridas para desenvolv-los,
mant-los?
Como os elementos so organizados em unidades de
desenvolvimento e implantao?
Ps-Engenharia de Software - FAT

77

Descrevendo arquiteturas com UML


Viso de Desenvolvimento
Diagrama de classes (detalhado)
Usuario
nome: String

Assistente

Gerente

Desenvolvedor
registrar(Atividade):boolean
extrairPlanilha():List

*
ListaDeDesenvolvedores
extrairPlanilhaGeral():List
consolidarPlanilha()
Ps-Engenharia de Software - FAT

Atividade
nome: String
duracao: int
data: Date
getNome():String
getDuracao():int
setDuracao(int)

78

39

Descrevendo arquiteturas com UML


Viso de Desenvolvimento

Diagrama de componentes

Diagrama de componentes
Chrono
Applet.class

Navegador

Servidor
Web

chrono.jar

Ps-Engenharia de Software - FAT

79

Descrevendo arquiteturas com UML


Viso Fsica
Qual o hardware (processadores, elementos de rede, etc.)
ser necessrio para executar o sistema?
Como esses ns sero conectados?
Quanto isso vai custar?
Qual ser o desempenho, throughput, confiabilidade e
disponibilidade do sistema?
Como o sistema ser instalado e mantido?

Ps-Engenharia de Software - FAT

80

40

Descrevendo arquiteturas com UML


Viso Fsica
Topologia de rede e mapeamento de elementos
Diagrama de Implantao

Mquina
Cliente

TCP/IP

1
Servidor
Web

Diagrama de implantao

Ps-Engenharia de Software - FAT

81

Estilos arquiteturais
Um estilo/padro arquitetural expressa:
Uma organizao estrutural
Um conjunto pr-definido de subsistemas e suas
responsabilidades
Inclui regras e diretrizes para organizar o
relacionamento entre os subsistemas

So templates para arquiteturas concretas


Ps-Engenharia de Software - FAT

82

41

Estilos arquiteturais
Diviso em Camadas (Layers)
Cliente-Servidor
Pipes and Filters
Model-View-Controller
Broker

Ps-Engenharia de Software - FAT

83

Estilos arquiteturais
Diviso em camadas
Estrutura aplicaes que podem ser decompostas em
grupos de sub-tarefas
Cada grupo est em um nvel de abstrao
Exemplo: Modelo OSI
Aplicao
Apresentao
Sesso
Transporte

Fornecer protocolos comuns para as aplicaes


Estruturar a informao
Dar suporte para dilogos e sincronizao
Dividir a mensagem em pacotes e garantir a entrega

Rede

Escolher uma rota do remetente ao destinatrio

Dados

Detectar e corrigir erros nas seqncias de bits

Fsica

Transmitir bits: velocidade, bit-code, conexo, etc.

Ps-Engenharia de Software - FAT

84

42

Estilos arquiteturais
Diviso em camadas

Problema
Sistema com vrias camadas de abstrao
Camadas de nveis superiores dependem das camadas
de nveis inferiores
Partes do sistema devem poder ser trocadas
Trocar a camada de comunicao
Trocar a camada de acesso a dados
Podem existir vrias camadas em um mesmo nvel de
abstrao dependendo de camadas inferiores
Interface grfica standalone (Swing) X Interface WEB

Ps-Engenharia de Software - FAT

85

Estilos arquiteturais
Diviso em camadas

Soluo
Estruture o sistema em camadas
Sobreponha as camadas em nveis de abstrao
Servios da camada X so compostos de servios da
camada X-1

Ps-Engenharia de Software - FAT

86

43

Estilos arquiteturais
Diviso em camadas

Conseqncias
Pontos positivos
Reso das camadas
Dependncias tendem a permanecer locais
Pontos negativos
Cascateamento de alteraes para as camadas
superiores quando o comportamento de uma camada
inferior muda

Ps-Engenharia de Software - FAT

87

Estilos arquiteturais
Diviso em camadas

As aplicaes que vocs desenvolvem utilizam o


padro Diviso em Camadas?
Se sim, faa o desenho desta arquitetura da sua
empresa
Se no, possvel estrutur-la em camadas? Quais
seriam as vantagens e desvantagens?

Ps-Engenharia de Software - FAT

88

44

Estilos arquiteturais
Cliente-Servidor

Baseado em programas servidores e programas


clientes
Cliente
Estabelece a conexo, envia mensagens para o
servidor e aguarda mensagens de resposta.
Servidor
Aguarda mensagens, executa servios e retorna
resultados.

Ps-Engenharia de Software - FAT

89

Estilos arquiteturais
Cliente-Servidor

Os primeiros sistemas cliente-servidor surgiram por


causa de limitaes nas arquiteturas de
compartilhamento de arquivos
Introduo de um banco de dados substituindo o
servidor de arquivos
Reduziu o trfego de rede, uma vez que somente
as consultas (e suas respostas) trafegavam, ao
invs de arquivos

Ps-Engenharia de Software - FAT

90

45

Estilos arquiteturais
Cliente-Servidor

Atualmente muitas aplicaes possuem arquitetura


Cliente-Servidor
Navegador WEB X Servidor WEB
Programa JAVA X Gerenciador de Banco de
Dados

Ps-Engenharia de Software - FAT

91

Estilos arquiteturais
Cliente-Servidor

Estrutura
Cliente

Servidor

Protocolo de comunicao

Ps-Engenharia de Software - FAT

92

46

Estilos arquiteturais
Cliente-Servidor

Vantagens
Utilizao dos recursos do servidor
Escalabilidade
Aumentando a capacidade computacional do servidor

Desvantagens
Introduz complexidade
Custos de comunicao

Ps-Engenharia de Software - FAT

93

Estilos arquiteturais
Cliente-Servidor

Descreva a arquitetura de um sistema de troca de


mensagens instantneas usando o padro clienteservidor

Ps-Engenharia de Software - FAT

94

47

Estilos arquiteturais
Pipes and filters

Problema
Desenvolvimento de um sistema que processa ou
transforma um stream de dados.

Exemplo:
Compilador
tokens
Cdigo fonte

Analisador
Lxico
Intel backend

rvore sinttica

Analisador
Sinttico

Analisador
Semntico

Gerador de
cdigo
intermedirio
Executvel

Executvel otimizado

Otimizador

MIPS backend
SPARC backend

rvore sinttica c/ semntica

Ps-Engenharia de Software - FAT

95

Estilos arquiteturais
Pipes and filters

E se o desenvolvimento fosse monoltico?


Como dividir a tarefa entre vrios desenvolvedores?
E se for possvel trocar etapas no processo?
E recombinar etapas?

Ps-Engenharia de Software - FAT

96

48

Estilos arquiteturais
Pipes and filters

Soluo
Dividir a tarefa entre vrias etapas seqenciais
Sada de uma etapa a entrada da etapa seguinte
Cada etapa de processamento implementada por um
filtro (filter)
Consome e entrega os dados incrementalmente, ao
invs de consumir todos os dados de uma s vez
Cada pipe implementa o fluxo dos dados entre os filtros

Ps-Engenharia de Software - FAT

97

Estilos arquiteturais
Pipes and filters

Soluo
Filter
Receber o dado da entrada
Processar o dado
Colocar o dado na sada
Pipe
Transferir o dado
Realizar buffer
Sincronizar os filtros vizinhos
Outros participantes
Fonte de dados
Sada de dados
Ps-Engenharia de Software - FAT

98

49

Estilos arquiteturais
Pipes and filters

Conseqncias
No preciso criar arquivos intermedirios (mas
possvel)
Flexibilidade na troca de filtros
Flexibilidade na recombinao
Eficincia no processamento em paralelo
Vrios filtros consumindo e produzindo dados em
paralelo.

Ponto negativo
Gerenciamento de erros
Ausncia de um estado global compartilhado
Ps-Engenharia de Software - FAT

99

Estilos arquiteturais
Model-View-Controller

A aplicao dividida em 3 componentes


Model contm a funcionalidade principal e os dados
View exibe a informao aos usurios
Controller gerenciam a entrada do usurio, deixando o
modelo transparente

Interface do usurio = View + Controller

Ps-Engenharia de Software - FAT

100

50

Estilos arquiteturais
Model-View-Controller

Quando usar?
Necessidade de vrias interfaces com o usurio
WEB, Swing
Necessidade de vrias vises dos dados
Planilhas, Tabelas, Grficos
Mudanas nos dados devem ser refletidas na interface

Ps-Engenharia de Software - FAT

101

Estilos arquiteturais
Model-View-Controller

Estrutura
Model
Funcionalidade principal da aplicao
Registrar controllers e views
Notificar controllers e views registrados de alteraes

Ps-Engenharia de Software - FAT

102

51

Estilos arquiteturais
Model-View-Controller

Estrutura
View
Criar e inicializar o controlador associado
Exibir informao ao usurio
Implementar o procedimento de atualizao
Recuperar dados do modelo
Controller
Receber a entrada de dados/requisies do usurio
Transformar as requisies dos usurios em
requisies ao modelo
Implementar o procedimento de atualizao (se
necessrio)
Ps-Engenharia de Software - FAT

103

Estilos arquiteturais
Model-View-Controller

Exemplo: Pesquisa de opinio


Usurios interagem atravs da interfaces
Mudanas devem refletir nas outras interfaces
Model
Controller

View

Ps-Engenharia de Software - FAT

104

52

Estilos arquiteturais
Model-View-Controller

Conseqncias
Pontos positivos
Mltiplas views de um mesmo modelo
views sincronizadas
Organizao clara de abstraes
Pontos negativos
Aumento da complexidade
Controllers e Views tendem a ser bastante
acoplados
Ps-Engenharia de Software - FAT

105

Estilos arquiteturais
Broker

Estruturar sistemas distribudos que precisam


interagir atravs de invocao remota de servios.
Exemplos
B2B
Interao com fornecedores para a solicitao de
servios
Utilizao de servios de busca
Google, amazon
Objetos em uma mesma aplicao esto distribudos
Escalabilidade, tolerncia a falhas, etc.
Ps-Engenharia de Software - FAT

106

53

Estilos arquiteturais
Broker

Estrutura
Clientes
Implementam a funcionalidade para o usurio
Envia requisies para os servidores atravs dos
representantes do lado cliente (proxies)
Servidores
Expem a funcionalidade atravs de interfaces (IDLs
ou binria)
Brokers
Registro de servidores
Transferncia de mensagens
Recuperao de erros
Comunicao com outros brokers atravs de bridges
Localizar servidores
Ps-Engenharia de Software - FAT

107

Estilos arquiteturais
Broker

Estrutura
Bridges
Encapsulam funcionalidades de rede
Mediam comunicaes entre o broker local e a bridge
pertencente ao broker remoto
Representantes do cliente (Client-side proxies)
Encapsulam funcionalidades especficas do sistema
(comunicao inter-processo, memria,
empacotamento e desempacotamento dos dados)
Mediam comunicaes entre o cliente e o broker
Representantes do servidor (Server-side proxies)
Invocam os servios do servidor
Encapsulam funcionalidades especficas do sistema
Mediam comunicaes entre o servidor e o broker
Ps-Engenharia de Software - FAT

108

54

Estilos arquiteturais
Broker

Servidores

Proxy
Requisita
servio
Proxy

re
gi
st
ro

Proxy

Proxy

Servidores

Broker
A
Proxy

Bridge

Broker
B

Cliente

Proxy

Ps-Engenharia de Software - FAT

109

Estilos arquiteturais
Broker

Servidores

Proxy
Requisita
servio
Proxy

re
gi
st
ro

Proxy

Proxy

Servidores

Broker
A
Bridge

Proxy

Broker
B

Cliente

Ps-Engenharia de Software - FAT

Proxy
110

55

Estilos arquiteturais
Broker

Conseqncias
Pontos positivos
Transparncia de localizao dos servios
Flexibilidade
Se os servidores forem trocados mas as interfaces
permanecerem as mesmas, no h impacto para o
resto do sistema.
Portabilidade

Ps-Engenharia de Software - FAT

111

Estilos arquiteturais
Broker

Conseqncias
Ponto negativo
Sobrecarga de processamento
Indireo
Debug
Uma falha na execuo de um servio pode ter
sido causada tanto pelo cliente quanto pelo
servidor. Mais variveis para observar.

Ps-Engenharia de Software - FAT

112

56

Exerccio
Especifiquem novamente a arquitetura definida
anteriormente de acordo com as vises e estilos
arquiteturais

Documentao em UML

Ps-Engenharia de Software - FAT

113

57

Você também pode gostar