1
Arquitetura de Software IHyggo Oliveira de Almeida
Laboratório de Sistemas Embarcados e Computação PervasivaCentro de Engenharia Elétrica e Informática
Universidade Federal de Campina Grande
Apresentação do cursoMotivação para o curso
Objetivos do cursoConteúdo
Resultado esperadoBibliografia
Dúvidas???
2
Pós-Engenharia de Software - FAT 3
Motivação para o curso
Na última disciplina vocês viram RUPProcesso centrado na arquitetura
Arquitetura desempenha papel fundamental no processo de desenvolvimento
RiscosCustosDesempenhoFlexibilidade
Pós-Engenharia de Software - FAT 4
Motivação para o curso
Problemas na arquitetura acarretam problemas no projeto e implementação
Corrigir a arquitetura custa caro!
Definir uma arquitetura adequada pode ser determinante para o sucesso do softwareAprendemos anteriormente como aplicar um processo de desenvolvimento de software... ... agora discutiremos como especificar, documentar e avaliar uma arquitetura de software!
3
Pós-Engenharia de Software - FAT 5
Objetivo do curso
Introduzir o conceito de Arquitetura de SoftwarePrincipais elementos Estilos e visõesDocumentação com UMLAtributos de qualidade
Pós-Engenharia de Software - FAT 6
Conteúdo do curso (Módulo I)
O que é arquitetura de software?Motivação e benefíciosConceitosVisões arquiteturaisDescrevendo arquiteturas com UMLEstilos arquiteturais
4
Pós-Engenharia de Software - FAT 7
Conteúdo do curso (Módulo II)
Atributos de qualidadeSeleção de estilosSeleção de visõesRastreabilidade bidirecional
Pós-Engenharia de Software - FAT 8
Ao terminar o curso vocês devem...
Saber o que é uma arquitetura de softwareConhecer os principais conceitosEntender o uso de estilos arquiteturaisSaber documentar arquiteturas com UMLDefinir atributos de qualidade de arquiteturas
5
Pós-Engenharia de Software - FAT 9
Exemplo base
Definam grupos (Máximo 4 pessoas)Cada grupo fará uma descrição textual de um software
De preferência algo que já tenha sido ou está sendo desenvolvido na empresaNível razoável de complexidade
Calculadora e agenda não valem!!! ☺
Pós-Engenharia de Software - FAT 10
Bibliografia
LivrosBeyond Software Architecture, Luke Hohmann, Addison Wesley, 2003Software Architecture: Perspectives on an Emerging Discipline, Mary Shaw, David Garlan, Prentice Hall, 1996Software Architecture in Practice, Second Edition, Len Bass, Paul Clements, Rick Kazman, Addison Wesley, 2003The Art of Software Architecture, Stephen T. Albin, John Wiley & Sons, 2003Pattern-Oriented Software Architecture, Volume 3, Michael Kircher and PrashantJain, John Wiley & Sons, 2004UML – Guia do usuário, James Rambaugh, Campus, 2000
6
Pós-Engenharia de Software - FAT 11
Dúvidas sobre o curso???
Dúvidas sobre o conteúdo...É só isso???Isso tudo professor?!?E vai dar tempo???
Meu e-mail de contato:[email protected]
Módulo IO que é arquitetura de software?
Motivação e benefíciosConceitos
Visões arquiteturaisDescrevendo arquiteturas com UML
Estilos arquiteturais
1
7
Pós-Engenharia de Software - FAT 13
O que é Arquitetura?
Arquitetura como um processoA arte ou ciência de construir edificações de quaisquer tipos para uso humanoA ação ou processo de construirO método ou estilo especial que direciona os detalhes da estrutura e ornamentação de uma construção
Arquitetura como um artefatoTrabalho arquitetural: estrutura, construçãoConstrução ou estrutura em geral
Fonte: Dicionário Webster
Pós-Engenharia de Software - FAT 14
O que é Arquitetura de Software?Muitas definições...
“...conjunto de elementos arquiteturais (ou de projeto) que têm uma forma particular.” Perry and Wolf, 1992“...estrutura(s) do sistema, que compreende(em) a componentes de software, as propriedades externamente visíveis desses componentes, e os relacionamentos entre eles.” Clements et al., 1997"...especificação abstrata do sistema consistindo primeiramente de componentes funcionais descritos em termos de seus comportamentos, interfaces e interconexões 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 método de projeto e construção" Hayes-Roth, 1995“...estrutura de suporte de um sistema“ Rechtin, 1992"...estrutura de sistema que consiste de módulos ativos, um mecanismo para permitir interação entre estes módulos e um conjunto de regras que governam a interação"Boasson, 1995
8
Pós-Engenharia de Software - FAT 15
O que é Arquitetura de Software?...resumindo
Elementos em comum...Descrição dos componentes principaisRelacionamentos e interações entre componentesOmite informação sobre o conteúdo dos componentes não relacionada a suas interaçõesO comportamento dos componentes é uma parte da arquitetura enquanto possa ser discernido do ponto de vista de outro componenteA arquitetura define uma lógica por trás dos componentes e da estrutura
Pós-Engenharia de Software - FAT 16
O que é Arquitetura de Software?Rational Software
Arquitetura de Software também envolveFuncionalidadeUsabilidadeDesempenhoReúsoFacilidade de compreensãoRestrições e equilíbrio de fatores econômicos e tecnológicos
9
Pós-Engenharia de Software - FAT 17
O que é Arquitetura de Software? Restringindo projeto e implementação
A arquitetura envolve um conjunto de decisões de design, regras ou padrões que restringem o projeto e a implementação
Código
implementação
arquitetura
projeto
As decisões de arquitetura são as mais fundamentais e alterá-las provoca efeitos colaterais significativos.
Pós-Engenharia de Software - FAT 18
O que é Arquitetura de Software?Sistemas de software x Sistemas físicos
x
10
Pós-Engenharia de Software - FAT 19
O que é Arquitetura de Software?Sistemas de software x Sistemas físicos
Vocês já imaginaram no caos existente se...
...caíssem aviões na mesma proporção em que softwares travam?
Pós-Engenharia de Software - FAT 20
Sistemas físicos maduros têm arquitetura estável: aviões, automóveis, navios, pontes, etc.
Essas arquiteturas evoluíram ao longo do tempoTentativa e erroReúso e refinamento de soluções de sucessoAvaliação quantitativa com métodos analíticos
O que é Arquitetura de Software?Sistemas de software x Sistemas físicos
11
Pós-Engenharia de Software - FAT 21
O que é Arquitetura de Software?Sistemas de software x Sistemas físicos
Natureza temporalEstado e comportamento complexo, difícil de analisarCapacidade de auto-modificação e de evolução
Pós-Engenharia de Software - FAT 22
O que é Arquitetura de Software?Sistemas de software x Sistemas físicos
“Invisibilidade”
x
12
Pós-Engenharia de Software - FAT 23
O que é Arquitetura de Software?Sistemas de software x Sistemas físicos
Custo de replicação da produção é mais barato
E a facilidade de piratear também!Já imaginou como piratear um prédio???
Pós-Engenharia de Software - FAT 24
O que é Arquitetura de Software?Concepções errôneas
Arquitetura e projeto são a mesma coisaArquitetura e infra-estrutura são a mesma coisaArquitetura é ‘plana’ e expressa por um único diagramaA arquitetura não pode ser medida ou validada
13
Pós-Engenharia de Software - FAT 25
O que é Arquitetura de Software?Concepções errôneas
Arquitetura e projeto são a mesma coisaA arquitetura é um aspecto do projeto, focada em
elementos que são importantes estruturalmenteelementos que têm impacto significativo em desempenho, confiabilidade, custo, adaptabilidade, etc.
A arquitetura não diz respeito ao projeto detalhado de componentes individuais
Tema da próxima disciplina
Pós-Engenharia de Software - FAT 26
O que é Arquitetura de Software?Concepções errôneas
Arquitetura = infra-estruturaInfra-estrutura é parte integral e importante da arquiteturaA arquitetura define interoperabilidade entre a infra-estrutura e os componentes da aplicaçãoArquitetura aborda estrutura, decomposição, interfaces, etc.
14
Pós-Engenharia de Software - FAT 27
O que é Arquitetura de Software?Concepções errôneas
Arquitetura = infra-estruturaArquitetura aborda...
Aspectos dinâmicosArgumentação lógicaAdequação ao contexto
Contexto de negócioContexto de desenvolvimento
Pós-Engenharia de Software - FAT 28
O que é Arquitetura de Software?Concepções errôneas
Arquitetura é ‘plana’ e expressa por um único diagramaA arquitetura é plana apenas em casos muito triviaisA arquitetura tem muitas dimensões, que representam múltiplas questões de múltiplos stakeholdersUsar um único diagrama para representar todas as dimensões da arquitetura leva à sobrecarga semântica (leia-se “confusão”)Arquitetura requer múltiplas visões
15
Pós-Engenharia de Software - FAT 29
O que é Arquitetura de Software?Concepções errôneas
A arquitetura não pode ser medida ou validadaArquiteturas podem ser sistematicamente avaliadas contra requisitos de qualidade e funcionais, riscos e atributos chave do sistema
Revisando os artefatos da arquiteturaTestando os protótipos da arquitetura
Pós-Engenharia de Software - FAT 30
Motivação e benefíciosPor que arquitetar?
Integridade e qualidade do sistemaControle da complexidadePrevisibilidadeTestabilidadeReúsoComunicaçãoOrganização e gerência de projetos
16
Pós-Engenharia de Software - FAT 31
Motivação e benefíciosIntegridade e qualidade do sistema
A arquitetura propicia integridade conceitual e qualidade ao sistema, ao mesmo tempo em que permite mudanças
Funcionalidade requeridaAtributos de qualidadeNovos requisitosRequisitos modificadosTendências tecnológicas
A arquitetura propicia longevidade ao sistemaFacilidade de evoluçãoEscalabilidade
Pós-Engenharia de Software - FAT 32
Motivação e benefíciosControle da complexidade
Dividir para conquistarDecomposição em componentesDetalhes de implementação ocultos
Separação de áreas de interesseComponentes (e camadas) encapsulam detalhesComponentes distintos podem ser implementados por pessoas com especialidades diferentes
17
Pós-Engenharia de Software - FAT 33
Motivação e benefíciosPrevisibilidade
Previsibilidade do processoProtótipos da arquitetura permitem coletar métricas
Métricas de custo do desenvolvimentoMétricas de cronograma
Previsibilidade comportamentalIterações da arquitetura removem maiores riscos
Pós-Engenharia de Software - FAT 34
Motivação e benefíciosTestabilidade
Sistemas adequadamente componentizadossuportam maior e melhor
Diagnóstico de problemasRastreabilidadeDetecção de erros
18
Pós-Engenharia de Software - FAT 35
Motivação e benefíciosReúso
A arquitetura define regras de substituiçãoInterfaces entre componentes definem limites de substituiçãoA arquitetura propicia diferentes granularidades de reúso
Reúso em pequena escala, no nível de componentesReúso em larga escala
SubsistemasProdutosFrameworks
Pós-Engenharia de Software - FAT 36
Motivação e benefíciosComunicação
A arquitetura auxilia a comunicação entre stakeholdersVisões distintas endereçam questões de stakeholders distintosA arquitetura comunica decisões chave de projeto
19
Pós-Engenharia de Software - FAT 37
Motivação e benefíciosOrganização e gerência de projetos
Estrutura organizacional alinhada com a arquiteturaEquipe(s) de desenvolvimentoSubcontratados
Componentes / subsistemas utilizados como unidades para
DesenvolvimentoGerência de configuraçãoTesteImplantação e evolução
Componentes / subsistemas desenvolvidos concorrentemente
Pós-Engenharia de Software - FAT 38
Motivação e benefíciosEvitar ou reduzir custos
Minimizar o custo de (re)trabalhoEconomias com o reúso
Reúso de componentesDesenvolvimento de componentes reutilizáveis
Economias com a utilização efetiva de recursos do projetoEconomias com estimativas de custo / cronograma mais precisasEconomias com manutenção aprimoradas
20
Pós-Engenharia de Software - FAT 39
Motivação e benefíciosEvitar ou reduzir custos
O investimento em arquitetura ocorre nas fases iniciais do desenvolvimento
ConcepçãoElaboração
Modelos de estimativa de custo são imprecisos nas fases iniciaisOs benefícios da arquitetura ocorrem durante a implementação e manutenção
Pós-Engenharia de Software - FAT 40
A longo prazo, não arquitetar o sistema pode ser muito caro
Motivação e benefíciosEvitar ou reduzir custos
A gerência sempre é muito relutante em bancar custos nas fases iniciais do projetoArquiteturas robustas são mais críticas se a complexidade do projeto, criticalidade e tamanho são grandesBoa arquitetura ajuda a estimar e a controlar os custos do projeto
21
Pós-Engenharia de Software - FAT 41
Exercício
Com sua experiência atual de desenvolvimento de software, projete a arquitetura do software definido anteriormente.
Pós-Engenharia de Software - FAT 42
Conceitos
AcoplamentoCoesãoInterfaceComponentesConectoresEstilo arquiteturalPadrões de projetoVisão arquitetural
22
Pós-Engenharia de Software - FAT 43
ConceitosAcoplamento
Grau de interconexão entre diferentes pedaços de um sistemaPedaços menos acoplados são mais fáceis de entender, testar, reusar e manterBaixo acoplamento também promove o paralelismo de implementação
Alto Acoplamento(efeito cascata)
Pós-Engenharia de Software - FAT 44
ConceitosCoesão
Quão proximamente são relacionadas as atividades dentro de um único pedaço (componente) ou entre um grupo de padaços?
Componentes altamente coesos = relacionados a apenas UMA funcionalidade
Impressão
Relatório
Interface
ImpressãoRelatórioInterfaceAlta coesão
Baixa coesão
23
Pós-Engenharia de Software - FAT 45
ConceitosInterface
As maneiras em que subsistemas dentro de um projeto maior interagem são claramente definidas. Idealmente, interações são especificadas de um modo que possam se manter relativamente estáveis ao longo do ciclo de vida do sistema. Um modo de alcançar isso é através de abstrações sobre a implementação concreta.
Pós-Engenharia de Software - FAT 46
ConceitosInterface
Exemplo clássico: tomada!
Interface bem definida
24
Pós-Engenharia de Software - FAT 47
ConceitosInterface
Exemplo clássico: tomada!
Abstração sobre... ... a implementação concreta
Pós-Engenharia de Software - FAT 48
ConceitosComponentes
Unidades de distribuição, montagem, implantação e substituiçãoExecutam funcionalidade não trivialUm componente é definido pelos serviços que provê e pelos serviços que requer
Os serviços revelam o comportamento até onde necessário para a montagem (assembly)
Não necessariamente uma única unidade de código ou um único executável
25
Pós-Engenharia de Software - FAT 49
ConceitosConectores
Veículos de comunicação entre componentesDescrição das interações entre componentes
Exemplos de conectores:Chamadas de procedimentoAnúncios de eventosProtocolos de comunicaçãoInvocações de serviços
Pós-Engenharia de Software - FAT 50
ConceitosEstilo ou padrão arquitetural
Vocabulário de tipos de componentes e conectores
+Conjunto de restrições sobre como eles podem ser combinados
Exemplos:Cliente-Servidor, Pipes and Filters, Model-View-Controller, Broker
26
Pós-Engenharia de Software - FAT 51
ConceitosPadrões de projeto
Soluções de projeto de baixo nívelClasses, objetos...
Mais detalhadaVisão interna dos componentes da arquitetura
Assunto para a próxima disciplinaArquitetura de Software II
Pós-Engenharia de Software - FAT 52
ConceitosVisão arquitetural
Projeção de um modelo da arquitetura sob determinada perspectivas
Diferentes visões para diferentes stakeholders
Visão Modelo
Stakeholder
27
Pós-Engenharia de Software - FAT 53
ConceitosVisão arquitetural
ModeloUma descrição completa de um sistema sob uma perspectiva particular e um nível específico de abstração
VisãoUma projeção de um modelo, que é visto sob uma determinada perspectiva, e omite entidades que não são relevantes a essa perspectiva
Pós-Engenharia de Software - FAT 54
ConceitosVisão arquitetural
Cliente Arquiteto
28
Pós-Engenharia de Software - FAT 55
ConceitosVisão arquitetural
Cliente Arquiteto
Pós-Engenharia de Software - FAT 56
Exercício
Revisem e atualizem a arquitetura definida anteriormente considerando os conceitos aprendidos.
Vocês já viram UML...Considerem diferentes stakeholders
ArquitetoDesenvolvedorCliente
29
Pós-Engenharia de Software - FAT 57
Visões arquiteturais
Modelo “4+1” (Rational Software)
VisãoLógica
Visão deDesenvolvimento
Visão deProcesso
VisãoFísica
Cenários
Pós-Engenharia de Software - FAT 58
Visões arquiteturaisLógica
Visão Lógica“Retrato estático” dos relacionamentos existentes entre as entidades do sistemaPode possuir duas ou mais representações, dentre elas, uma conceitual e outra de esquema de banco de dados
VisãoLógica
30
Pós-Engenharia de Software - FAT 59
Visões arquiteturaisProcesso
Visão de ProcessoDescreve aspectos de sincronização e concorrênciaDescrição de processos concorrentesDiferentes linhas de execução (threads), entidades ativas
Visão deProcesso
Pós-Engenharia de Software - FAT 60
Visões arquiteturaisDesenvolvimento
Visão de DesenvolvimentoDescreve a organização do software em seu ambiente de desenvolvimento
ComponentesLinguagens
Visão deDesenvolvimento
31
Pós-Engenharia de Software - FAT 61
Visões arquiteturaisFísica
Visão FísicaDescreve o mapeamento do software para o hardwareDistribuição de componentesVerificação de alta disponibilidade, confiabilidade, desempenho...Também chamada “deployment”
Visão Física
Pós-Engenharia de Software - FAT 62
Visões arquiteturaisCenários (+1)
Cenários (+1)Cenários de funcionamento do sistema diretamente ligados à arquiteturaPrincipais casos de usoLembram de RUP?
Centrado em arquitetura!
Cenários
32
Pós-Engenharia de Software - FAT 63
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 visões?
Pós-Engenharia de Software - FAT 64
Descrevendo arquiteturas com UMLCenários
Não definem a estrutura do sistemaSão necessários para entender como o sistema trabalha e por que a arquitetura é como é
Desenvolvedor
GerenteAssitente
administrativo
Medir tempo para uma atividade
Extrair planilhas de
tempo semanais
Consolidar dados do projeto
Configurar banco de dados
e ferramenta
33
Pós-Engenharia de Software - FAT 65
Descrevendo arquiteturas com UML
Descrições textuais dos casos de uso e seqüência de eventos
Caso de uso: Medir tempo para uma atividadeAtores: DesenvolvedorDescrição: O desenvolvedor solicita ao sistema que uma nova atividade seja registrada de acordo com seu tempo de duração.Seqüência de ações
Ator Sistema
1. O desenvolvedor determina o nome e o tempo de duração da atividade e encaminha ao sistema.
2. O sistema armazena a informação e retorna OK para o desenvolvedor.
3. O desenvolvedor recebe OK do sistema
Pós-Engenharia de Software - FAT 66
Descrevendo arquiteturas com UML
Visão LógicaQual a composição lógica do sistema?Quais responsabilidades foram atribuídas aos diferentes elementos do sistema?Qual o agrupamento lógico dos elementos do sistema?
34
Pós-Engenharia de Software - FAT 67
Descrevendo arquiteturas com UML
Visão LógicaEstrutura
Diagramas de PacotesPartições maiores (pacotes)
Diagramas de ClassesElementos de design significativos para a arquitetura (classes, subsistemas, interfaces) e relacionamentos entre eles
Pós-Engenharia de Software - FAT 68
Descrevendo arquiteturas com UML
Visão LógicaDiagramas de Pacotes
InterfaceGráfica
Cronômetro
35
Pós-Engenharia de Software - FAT 69
Descrevendo arquiteturas com UML
Visão LógicaDiagramas de Classes
Desenvolvedor Atividade*nome: Stringduracao: intdata: Date
Usuarionome: String
GerenteAssistente
ListaDeDesenvolvedores
*
Pós-Engenharia de Software - FAT 70
Descrevendo arquiteturas com UML
Visão LógicaComportamento
Diagramas de interação (seqüência e colaboração)
:Atividade :Desenvolvedor
criar(“Teste”)
registrar(atividade)
setDuracao(120)
ok
Desenvolvedor
36
Pós-Engenharia de Software - FAT 71
Descrevendo arquiteturas com UML
Visão LógicaComportamento
Diagramas de interação (seqüência e colaboração)
:Desenvolvedor
:Atividade
1:extrairPlanilhaGeral() 2:extrairPlanilha()
3:planilha
2.1:getNome()2.3:getDuracao()
2.2:nome2.4:duracao
4:consolidarPlanilha()
:ListaDeDesenvolvedores
5:planilhaGeral
Gerente/Assitente
Pós-Engenharia de Software - FAT 72
Descrevendo arquiteturas com UML
Visão de ProcessoQuais as entidades ativas do sistema?Quais threads de controle eles implementam (executam em)?Quais os mecanismos de projeto necessários para suportar comunicação entre objetos?
37
Pós-Engenharia de Software - FAT 73
Descrevendo arquiteturas com UML
Visão de ProcessoDiagramas de Classes
Classes ativas <<process>> e <<thread>>Relacionamentos de comunicação interprocessos(IPC)Tantos diagramas de classes quanto necessário
Pós-Engenharia de Software - FAT 74
Descrevendo arquiteturas com UML
Visão de Processo
Desenvolvedor Atividade*nome: Stringduracao: intdata: Date
Usuarionome: String
GerenteAssistente
ListaDeDesenvolvedores
*
<<thread>>Notificador
<<process>>SendMail
IPC(HTTP)
38
Pós-Engenharia de Software - FAT 75
Descrevendo arquiteturas com UML
Visão de ProcessoComportamento
Diagramas de Interação (seqüência ou comunicação) mostrando IPC
Instâncias ativasComunicação
Diagramas de atividadesPelo menos um diagrama por processo
Pós-Engenharia de Software - FAT 76
Descrevendo arquiteturas com UML
Visão de ProcessoDiagrama de atividades (Notificador)
Verificarcronômetro
Início
Finalizarciclo
[tempo>3] Notificarusuário
[tempo<=3]
CancelarTarefa
EnviarEmail
Fim
39
Pós-Engenharia de Software - FAT 77
Descrevendo arquiteturas com UML
Visão de DesenvolvimentoQuais os elementos que implementam a instanciação de execução do sistema?De onde eles vêm (desenvolvimento interno, compra, etc.)?Quais as linguagens de programação, técnicas, ferramentas, etc., usadas para criar esses elementos? Quais as competências requeridas para desenvolvê-los, mantê-los?Como os elementos são organizados em unidades de desenvolvimento e implantação?
Pós-Engenharia de Software - FAT 78
Descrevendo arquiteturas com UML
Visão de DesenvolvimentoDiagrama de classes (detalhado)
Atividade*nome: Stringduracao: intdata: Date
Usuarionome: String
GerenteAssistente
ListaDeDesenvolvedores
*
Desenvolvedorregistrar(Atividade):booleanextrairPlanilha():List
getNome():StringgetDuracao():intsetDuracao(int)
extrairPlanilhaGeral():ListconsolidarPlanilha()
40
Pós-Engenharia de Software - FAT 79
Descrevendo arquiteturas com UML
Visão de DesenvolvimentoDiagrama de componentes
ChronoApplet.class
Navegador
Servidor Web
chrono.jarDia
gram
a de
com
pone
ntes
Pós-Engenharia de Software - FAT 80
Descrevendo arquiteturas com UML
Visão FísicaQual o hardware (processadores, elementos de rede, etc.) será necessário para executar o sistema?Como esses nós serão conectados?Quanto isso vai custar?Qual será o desempenho, throughput, confiabilidade e disponibilidade do sistema?Como o sistema será instalado e mantido?
41
Pós-Engenharia de Software - FAT 81
Descrevendo arquiteturas com UML
Visão FísicaTopologia de rede e mapeamento de elementos
Diagrama de Implantação
ServidorWeb
MáquinaCliente
1*
Diagrama de implantação
TCP/IP
Pós-Engenharia de Software - FAT 82
Estilos arquiteturais
Um estilo/padrão arquitetural expressa:Uma organização estruturalUm conjunto pré-definido de subsistemas e suas responsabilidadesInclui regras e diretrizes para organizar o relacionamento entre os subsistemas
São “templates” para arquiteturas concretas
42
Pós-Engenharia de Software - FAT 83
Estilos arquiteturaisDivisão em Camadas (Layers)Cliente-ServidorPipes and FiltersModel-View-ControllerBroker
Pós-Engenharia de Software - FAT 84
Estilos arquiteturaisDivisão em camadas
Estrutura aplicações que podem ser decompostas em grupos de sub-tarefas
Cada grupo está em um nível de abstraçãoExemplo: Modelo OSI
Aplicação
Apresentação
Sessão
Transporte
Rede
Dados
Física Transmitir bits: velocidade, bit-code, conexão, etc.
Detectar e corrigir erros nas seqüências de bits
Escolher uma rota do remetente ao destinatário
Dividir a mensagem em pacotes e garantir a entrega
Dar suporte para “diálogos” e sincronização
Estruturar a informação
Fornecer protocolos comuns para as aplicações
43
Pós-Engenharia de Software - FAT 85
Estilos arquiteturaisDivisão em camadas
ProblemaSistema com várias camadas de abstraçãoCamadas de níveis superiores dependem das camadas de níveis inferioresPartes do sistema devem poder ser trocadas
Trocar a camada de comunicaçãoTrocar a camada de acesso a dados
Podem existir várias camadas em um mesmo nível de abstração dependendo de camadas inferiores
Interface gráfica standalone (Swing) X Interface WEB
Pós-Engenharia de Software - FAT 86
Estilos arquiteturaisDivisão em camadas
SoluçãoEstruture o sistema em camadasSobreponha as camadas em níveis de abstração
Serviços da camada X são compostos de serviços da camada X-1
44
Pós-Engenharia de Software - FAT 87
Estilos arquiteturaisDivisão em camadas
ConseqüênciasPontos positivos
Reúso das camadasDependências tendem a permanecer “locais”
Pontos negativosCascateamento de alterações para as camadas superiores quando o comportamento de uma camada inferior muda
Pós-Engenharia de Software - FAT 88
Estilos arquiteturaisDivisão em camadas
As aplicações que vocês desenvolvem utilizam o padrão Divisão em Camadas?
Se sim, faça o desenho desta arquitetura da sua empresa
Se não, é possível estruturá-la em camadas? Quais seriam as vantagens e desvantagens?
45
Pós-Engenharia de Software - FAT 89
Estilos arquiteturaisCliente-Servidor
Baseado em programas servidores e programas clientesCliente
Estabelece a conexão, envia mensagens para o servidor e aguarda mensagens de resposta.
ServidorAguarda mensagens, executa serviços e retorna resultados.
Pós-Engenharia de Software - FAT 90
Estilos arquiteturaisCliente-Servidor
Os primeiros sistemas cliente-servidor surgiram por causa de limitações nas arquiteturas de compartilhamento de arquivos
Introdução de um banco de dados substituindo o servidor de arquivosReduziu o tráfego de rede, uma vez que somente as consultas (e suas respostas) trafegavam, ao invés de arquivos
46
Pós-Engenharia de Software - FAT 91
Estilos arquiteturaisCliente-Servidor
Atualmente muitas aplicações possuem arquitetura Cliente-Servidor
Navegador WEB X Servidor WEBPrograma JAVA X Gerenciador de Banco de Dados
Pós-Engenharia de Software - FAT 92
Estilos arquiteturaisCliente-Servidor
Estrutura
Cliente Servidor
Protocolo de comunicação
47
Pós-Engenharia de Software - FAT 93
Estilos arquiteturaisCliente-Servidor
VantagensUtilização dos recursos do servidorEscalabilidade
Aumentando a capacidade computacional do servidor
DesvantagensIntroduz complexidadeCustos de comunicação
Pós-Engenharia de Software - FAT 94
Estilos arquiteturaisCliente-Servidor
Descreva a arquitetura de um sistema de troca de mensagens instantâneas usando o padrão cliente-servidor
48
Pós-Engenharia de Software - FAT 95
Estilos arquiteturaisPipes and filters
ProblemaDesenvolvimento de um sistema que processa ou transforma um “stream” de dados.
Exemplo:Compilador
Código fonte AnalisadorLéxico
AnalisadorSintático
AnalisadorSemântico
Gerador decódigo
intermediário
Otimizador
Intel backend
MIPS backend
SPARC backend
tokens Árvore sintática Árvore sintática c/ semântica
ExecutávelExecutável otimizado
Pós-Engenharia de Software - FAT 96
Estilos arquiteturaisPipes and filters
E se o desenvolvimento fosse monolítico?Como dividir a tarefa entre vários desenvolvedores?E se for possível trocar etapas no processo? E recombinar etapas?
49
Pós-Engenharia de Software - FAT 97
Estilos arquiteturaisPipes and filters
SoluçãoDividir a tarefa entre várias etapas seqüenciaisSaída de uma etapa é a entrada da etapa seguinteCada etapa de processamento é implementada por um filtro (filter)
Consome e entrega os dados incrementalmente, ao invés de consumir todos os dados de uma só vez
Cada “pipe” implementa o fluxo dos dados entre os filtros
Pós-Engenharia de Software - FAT 98
Estilos arquiteturaisPipes and filters
SoluçãoFilter
Receber o dado da entradaProcessar o dadoColocar o dado na saída
PipeTransferir o dadoRealizar “buffer”Sincronizar os filtros “vizinhos”
Outros participantesFonte de dadosSaída de dados
50
Pós-Engenharia de Software - FAT 99
Estilos arquiteturaisPipes and filters
ConseqüênciasNão é preciso criar arquivos intermediários (mas é possível)Flexibilidade na troca de filtrosFlexibilidade na recombinaçãoEficiência no processamento em paralelo
Vários filtros consumindo e produzindo dados em paralelo.
Ponto negativoGerenciamento de erros
Ausência de um estado global compartilhado
Pós-Engenharia de Software - FAT 100
Estilos arquiteturaisModel-View-Controller
A aplicação é dividida em 3 componentesModel – contém a funcionalidade principal e os dadosView – exibe a informação aos usuáriosController – gerenciam a entrada do usuário, deixando o modelo transparente
Interface do usuário = View + Controller
51
Pós-Engenharia de Software - FAT 101
Estilos arquiteturaisModel-View-Controller
Quando usar?Necessidade de várias interfaces com o usuário
WEB, Swing
Necessidade de várias visões dos dadosPlanilhas, Tabelas, Gráficos
Mudanças nos dados devem ser refletidas na interface
Pós-Engenharia de Software - FAT 102
Estilos arquiteturaisModel-View-Controller
EstruturaModel
Funcionalidade principal da aplicaçãoRegistrar controllers e viewsNotificar controllers e views registrados de alterações
52
Pós-Engenharia de Software - FAT 103
Estilos arquiteturaisModel-View-Controller
EstruturaView
Criar e inicializar o controlador associadoExibir informação ao usuárioImplementar o procedimento de atualizaçãoRecuperar dados do modelo
ControllerReceber a entrada de dados/requisições do usuárioTransformar as requisições dos usuários em requisições ao modeloImplementar o procedimento de atualização (se necessário)
Pós-Engenharia de Software - FAT 104
Estilos arquiteturaisModel-View-Controller
Exemplo: Pesquisa de opiniãoUsuários interagem através da interfacesMudanças devem refletir nas outras interfaces
View
Controller
Model
53
Pós-Engenharia de Software - FAT 105
Estilos arquiteturaisModel-View-Controller
ConseqüênciasPontos positivos
Múltiplas “views” de um mesmo modelo“views” sincronizadasOrganização clara de abstrações
Pontos negativosAumento da complexidade“Controllers” e “Views” tendem a ser bastante acoplados
Pós-Engenharia de Software - FAT 106
Estilos arquiteturaisBroker
Estruturar sistemas distribuídos que precisam interagir através de invocação remota de serviços.
ExemplosB2B
Interação com fornecedores para a solicitação de serviços
Utilização de serviços de buscaGoogle, amazon
Objetos em uma mesma aplicação estão distribuídosEscalabilidade, tolerância a falhas, etc.
54
Pós-Engenharia de Software - FAT 107
Estilos arquiteturaisBroker
EstruturaClientes
Implementam a funcionalidade para o usuárioEnvia requisições para os servidores através dos representantes do lado cliente (proxies)
ServidoresExpõem a funcionalidade através de interfaces (IDLsou binária)
BrokersRegistro de servidoresTransferência de mensagensRecuperação de errosComunicação com outros brokers através de bridgesLocalizar servidores
Pós-Engenharia de Software - FAT 108
Estilos arquiteturaisBroker
EstruturaBridges
Encapsulam funcionalidades de redeMediam comunicações entre o broker local e a bridgepertencente ao broker remoto
Representantes do cliente (Client-side proxies)Encapsulam funcionalidades específicas do sistema (comunicação inter-processo, memória, empacotamento e desempacotamento dos dados)Mediam comunicações entre o cliente e o broker
Representantes do servidor (Server-side proxies)Invocam os serviços do servidorEncapsulam funcionalidades específicas do sistemaMediam comunicações entre o servidor e o broker
55
Pós-Engenharia de Software - FAT 109
Estilos arquiteturaisBroker
Cliente
ProxyBroker
A
BrokerB
Requisitaserviço
Bridge
Servidores
Servidores
regis
troProxy
Proxy
Proxy
Proxy
Proxy
Pós-Engenharia de Software - FAT 110
Servidores
Proxy
Proxy
Servidores
Proxy
Proxy
Proxy
Estilos arquiteturaisBroker
Cliente
BrokerA
BrokerB
Proxy
Requisitaserviço
Bridge
regis
tro
56
Pós-Engenharia de Software - FAT 111
Estilos arquiteturaisBroker
ConseqüênciasPontos positivos
Transparência de localização dos serviçosFlexibilidade
Se os servidores forem trocados mas as interfaces permanecerem as mesmas, não há impacto para o resto do sistema.
Portabilidade
Pós-Engenharia de Software - FAT 112
Estilos arquiteturaisBroker
ConseqüênciasPonto negativo
Sobrecarga de processamentoIndireção
DebugUma falha na execução de um serviço pode ter sido causada tanto pelo cliente quanto pelo servidor. Mais variáveis para observar.
57
Pós-Engenharia de Software - FAT 113
Exercício
Especifiquem novamente a arquitetura definida anteriormente de acordo com as visões e estilos arquiteturais
Documentação em UML
Top Related