• Nenhum resultado encontrado

arqSow-2

N/A
N/A
Protected

Academic year: 2021

Share "arqSow-2"

Copied!
89
0
0

Texto

(1)

Arquitetura de Software 

e DBC – Parte 2

Patrick H S Brito

[email protected] Instituto de Computação Universidade Federal de Alagoas

(2)

Parte 1 ­ 

Relembrando...

O que é arquitetura de software?

Motivação e benefícios

Conceitos

Visões arquiteturais

Descrevendo arquiteturas com UML

(3)

Parte 2

Estilos e padrões arquiteturais Atributos de qualidade Seleção de estilos Seleção de visões Rastreabilidade bidirecional 

(4)

Estilos e padrões arquiteturais

Estilos arquiteturais

Definem meios de selecionar e apresentar blocos de 

construção de arquitetura (Shaw)

Padrões arquiteturais

Projetos de alto nível, testados e validados, de blocos de 

construção de arquitetura (Buschman).

(5)

Estilos e padrões arquiteturais 

Classificação

Programa principal/Subrotina (Main Program/Subroutine) Invocação remota de procedimento (Remote Procedure Call ­ RPC) Camadas (Layered) Invocação/Retorno (Call/Return) Interpretador (Interpreter) Baseado em regras (Rule­based) Máquina virtual (Virtual Machine) Seqüencial (Batch Sequential) Tubos e filtros (Pipe and Filter) Fluxo de dados (Data­Flow) Repositório (Repository) Quadro negro (Blackboard) Centrado em dados (Data­Centered) Comunicação de processos (Communicating Processes) Baseado em eventos Componentes independentes (Independent Components)

(6)

Estilos e padrões arquiteturais 

Invocação/Retorno (Call/Return)

Programa principal/Subrotina (Main 

Program/Subroutine)

Programa principal Subrotina 3 Subrotina 1 Subrotina 2

(7)

Estilos e padrões arquiteturais 

Invocação/Retorno (Call/Return)

Programa principal/Subrotina (Main 

Program/Subroutine)

Objetivos Programa principal Subrotina 3 Subrotina 1 Subrotina 2 Reúso

(8)

Estilos e padrões arquiteturais 

Invocação/Retorno (Call/Return)

Programa principal/Subrotina (Main 

Program/Subroutine)

Objetivos Programa principal Subrotina 3 Subrotina 1 Subrotina 2 Desenvolvimento  independente

(9)

Estilos e padrões arquiteturais 

Invocação/Retorno (Call/Return)

Invocação remota de procedimento (RPC)

Programa principal Subrotina 1 Subrotina 2 Rede Subrotina 3 192.168.10.8

(10)

Estilos e padrões arquiteturais 

Invocação/Retorno (Call/Return)

Invocação remota de procedimento (RPC)

Programa principal Subrotina 1 Subrotina 2 192.168.10.11 Rede Subrotina 3 192.168.10.8 Ganho de  desempenho (2 processadores)

(11)

Estilos e padrões arquiteturais 

Invocação/Retorno (Call/Return)

Camadas (Layered)

Aplicação Apresentação Sessão Transporte Rede Dados Física Apresentação Negócio Armazenamento

(12)

Estilos e padrões arquiteturais 

Invocação/Retorno (Call/Return)

Camadas (Layered)

 Camadas se comunicam apenas com outras adjacentes Apresentação Negócio Armazenamento

(13)

Estilos e padrões arquiteturais 

Invocação/Retorno (Call/Return)

Camadas (Layered)

 Alterações locais não são propagadas Apresentação Negócio Armazenamento

(14)

Estilos e padrões arquiteturais 

Componentes independentes

Comunicação de processos (Communicating Processes)

 Baseado na comunicação via troca de mensagens entre  processos  Em geral, via rede  Cliente ­ Servidor  Ponto a ponto (Peer to Peer – P2P)

(15)

Estilos e padrões arquiteturais 

Componentes independentes

Comunicação de processos (Communicating Processes)

 Cliente – Servidor  Já vimos anteriormente Servidor Aplicação: Internet

(16)

Estilos e padrões arquiteturais 

Componentes independentes

Comunicação de processos (Communicating Processes)

 Cliente – Servidor  Problema: servidor é ponto de falha! Clientes Servidor

(17)

Estilos e padrões arquiteturais 

Componentes independentes

Comunicação de processos (Communicating Processes)

 Ponto a Ponto (P2P)  Não há distinção entre nós  Cada nó mantém seus próprios dados e endereços conhecidos  Cada nó é “cliente e servidor ao mesmo tempo”

(18)

Estilos e padrões arquiteturais 

Componentes independentes

Comunicação de processos (Communicating Processes)

 Ponto a Ponto (P2P)  Exemplos de redes P2P: gnutella, freenet  Exemplos de aplicação: Kazaa, eMule  Vantagem: não há ponto de falha  Desvantagem: tempo de consulta

(19)

Estilos e padrões arquiteturais 

Componentes independentes

Baseado em eventos

 Produtores e consumidores de eventos  Consumidores se registram nos Produtores  Produtores notificam consumidores registrados  Motivação: A imprimir B a.imprimir()

(20)

Estilos e padrões arquiteturais 

Componentes independentes

Baseado em eventos

 Produtores e consumidores  são independentes  Execução via procedimentos disparados via mudança de  estados  Escalabilidade no número de interessados A B Produtor Consumidor interessado(“relatorioOK”) relatorioOK Relatóri o OK imprimir()

(21)

Estilos e padrões arquiteturais 

Componentes independentes

Baseado em eventos

 Aplicação comum  Interface gráfica menuDown onMouseOver onMouseClick onMousePressed onMouseReleased onSelected onKeyDown onKeyUp

(22)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Repositório (Repository)

Integridade, escalabilidade (novos clientes, novos dados)

Dados  compartilhados Cliente 1 Cliente 2 Cliente 3 Cliente n Estado atual consistente Clientes operam sobre os dados

(23)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Repositório (Repository)

Exemplo: banco de dados tradicional

Dados  compartilhados Cliente 1 Cliente 2 Cliente 3 Cliente n Transações Gatilhos (triggers)

(24)

Controlador

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Quadro negro (Blackboard)

+ x2

­

x Gerência dos dados Fontes de  conhecimento

(25)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Quadro negro (Blackboard)

2 x (3+2)2 + 3 ­ 6 = ? Sei somar! Sei multiplicar! Sei subtrair! Sei  exponencial! x2

­

x Controlador

(26)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Quadro negro (Blackboard)

2 x (3+2)2 + 3 ­ 6 = ? + x2

­

x Controlador         2 x (5)2 + 3 ­ 6 = ?

(27)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Quadro negro (Blackboard)

x2

­

x Controlador         2 x (5)2 + 3 ­ 6 = ?         2 x 25 + 3 ­ 6 = ?

(28)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Quadro negro (Blackboard)

+ x2

­

x Controlador         2 x 25 + 3 ­ 6 = ?          50 + 3 ­ 6 = ?

(29)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Quadro negro (Blackboard)

x2

­

x Controlador        53 ­ 6 = ?    47

(30)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Quadro negro (Blackboard)

Quadro Negro Ap 4 Ap 5 Ap n Ap 3 Ap 2 Ap 1 Controlador

(31)

Estilos e padrões arquiteturais 

Centrado em dados (Data­centered)

Quadro negro (Blackboard)

Sistemas complexos 

 Resolução Distribuída de Problemas ­ RDP 

Aplicações independentes

 Escalabilidade 

Ponto de falha!!!

 Quadro negro 

Arquitetura usada no paradigma de agentes

(32)

Estilos e padrões arquiteturais 

Máquina virtual (Virtual Machine)

Interpretador (Interpreter)

 Simular funcionalidade não nativa para obter portabilidade

Mecanismo de

interpretação (Instruções + dados)Estado interno Programa sendo  interpretado Dados  (Estado do programa) dados Atualiza Dados de  estado Instruções do programa saída Instrução selecionada Dados selecionados entrada

(33)

Estilos e padrões arquiteturais 

Máquina virtual (Virtual Machine)

Interpretador (Interpreter)

 Exemplo: Java public class Oi{     ... } Arquivo “Oi.java” Compilador Java “javac.exe” Êþº¾   1    <init> ()V  Code LineNumberTable  main ([Ljava/lang/String;)... Arquivo “Oi.class” bytecode Máquina Virtual Máquina Virtual Máquina Virtual Máquina Virtual Máquina Virtual INTERPRETA

(34)

Estilos e padrões arquiteturais 

Máquina virtual (Virtual Machine)

Interpretador (Interpreter)

 Problema  Desempenho  Algumas pesquisas apontam que algumas das linguagens  interpretadas já conseguem ser mais rápidas que C  Java, por exemplo  Máquina virtual nativa – Intel®

(35)

Estilos e padrões arquiteturais 

Máquina virtual (Virtual Machine)

Baseado em regras (Rule­based)

Conjunto de regras sobre um estado

Definição do estado atual com base em dados de entrada

Regras alteram o estado

Memória de  trabalho Base de Regras Máquina de  inferência entrada saída

(36)

Estilos e padrões arquiteturais 

Máquina virtual (Virtual Machine)

Baseado em regras (Rule­based)

Exemplos: Prolog, Sistemas Especialistas

SE “HORA=21:00”  ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” HORA = ? AÇÃO = ? Máquina de inferência HORA=18:00 Base de Regras Memória de trabalho

(37)

HORA = 18:00 AÇÃO = ?

Estilos e padrões arquiteturais 

Máquina virtual (Virtual Machine)

Baseado em regras (Rule­based)

Exemplos: Prolog, Sistemas Especialistas

SE “HORA=21:00”  ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” Máquina de inferência Base de Regras Memória de trabalho

(38)

Estilos e padrões arquiteturais 

Máquina virtual (Virtual Machine)

Baseado em regras (Rule­based)

Exemplos: Prolog, Sistemas Especialistas

SE “HORA=21:00”  ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” Máquina de inferência HORA = 18:00 AÇÃO = ESPERAR Base de Regras Memória de trabalho

(39)

Estilos e padrões arquiteturais 

Máquina virtual (Virtual Machine)

Baseado em regras (Rule­based)

Exemplos: Prolog, Sistemas Especialistas

SE “HORA=21:00”  ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” Máquina de inferência HORA = 18:00 AÇÃO = ESPERAR AÇÃO=ESPERAR Base de Regras Memória de trabalho

(40)

Estilos e padrões arquiteturais 

Fluxo de dados (Data Flow)

Seqüencial (Batch Sequential)

Programas independentes executados em seqüência

 Um após o outro  Dado transmitido por completo entre um programa e  outro  Jar Java Javac class{ } Arquivos fonte A$n3* 3N4*# Bytecode 000 1001 1001 Arquivo Jar executando Empacotando Compilando

(41)

Estilos e padrões arquiteturais 

Fluxo de dados (Data Flow)

Tubos e filtros (Pipe and Filter)

Já vimos na última aula

Exemplo: compilador

Código fonte Analisador

Lé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ável Executável otimizado

(42)

Estilos e padrões arquiteturais 

Fluxo de dados (Data Flow)

Tubos e filtros (Pipe and Filter)

(43)

Estilos e padrões arquiteturais 

Exercício

Quais estilos arquiteturais poderiam ser aplicados na 

arquitetura definida anteriormente (Módulo I)? Como?

Se algum estilo não puder ser aplicado, justifique o 

porquê.

Programa principal/Subrotina (Main Program/Subroutine) Invocação remota de procedimento (Remote Procedure Call ­ RPC) Camadas (Layered) Invocação/Retorno (Call/Return) Interpretador (Interpreter) Baseado em regras (Rule­based) Máquina virtual (Virtual Machine) Seqüencial (Batch Sequential) Fluxo de dados (Data­Flow) Repositório (Repository) Centrado em dados (Data­Centered) Comunicação de processos (Communicating Processes) Baseado em eventos Componentes independentes (Independent Components)

(44)

Atributos de qualidade

Arquitetura e funcionalidade

Se a funcionalidade fosse o único atributo buscado no 

desenvolvimento de um software...

... sua arquitetura seria sempre monolítica: uma só 

função, um só componente, uma só classe...

Outros atributos: mutabilidade (modifiability), usabilidade, 

desempenho... 

... influenciam na determinação da arquitetura do software

É com base em atributos de qualidade interessantes para 

o sistema que se determina a sua arquitetura

(45)

Atributos de qualidade

Classes de atributos

Qualidades de sistema: disponibilidade, mutabilidade, 

desempenho, usabilidade...

Qualidades de negócio: tempo de produção (time to 

market), custo e benefício...

Qualidades de arquitetura: buildability, integridade 

conceitual...

(46)

Atributos de qualidade

Qualidades de sistema

Disponibilidade

Mutabilidade

Desempenho

Segurança

Testabilidade

Usabilidade

(47)

Atributos de qualidade

Qualidades de sistema

Disponibilidade

 Relacionada a falhas no sistema e suas conseqüências  Um sistema está em falha quando não funciona mais de acordo  com a sua especificação  Uma falha é observável do ponto de vista externo  Medida de disponibilidade: tempo médio para falhar tempo médio para falhar + tempo médio para reparar disp =

(48)

Atributos de qualidade

Qualidades de sistema

Mutabilidade

 Relacionado ao custo de mudanças  O que pode mudar?  Implementação de funcionalidades  Plataforma na qual o sistema é executado (hardware, SO,...)  Portabilidade  O ambiente no qual opera (protocolos, rede, outros sistemas)  Capacidade (nº de usuários, nº de operações simultâneas)  Escalabilidade  Quem pode mudar?  Desenvolvedor, usuário final, administrador...

(49)

Atributos de qualidade

Qualidades de sistema

Mutabilidade

 Quando pode mudar?  Implementação (código fonte)  Construção – build (escolha de bibliotecas)  Configuração   Execução (parametrização)

(50)

Atributos de qualidade

Qualidades de sistema

Desempenho

 Relacionado a tempo!  Eventos ocorrem e o sistema tem que responder aos mesmos  A medida de desempenho é:  Quanto tempo leva o sistema para responder a um evento?  Evento???  Interrupções, mensagens, requisições do usuário,  inicialização...  Exemplo:  Respostas a requisições do usuário não podem durar mais que  10 milisegundos!

(51)

Atributos de qualidade

Qualidades de sistema

Segurança

 Habilidade do sistema de impedir acesso não autorizado...  ... ainda garantindo acesso autorizado!  Segurança pode ser visto como uma composição de:  Não repudiação: uma transação não pode ser negada por  nenhuma das partes envolvidas  Confidencialidade: proteção a acesso não autorizadoIntegridade: de dados e serviçosGarantia: partes de uma transação são quem dizem que sãoDisponibilidade: sistema disponível para uso sem falhasAuditoria: caso ocorra falha, o sistema consegue recuperar­se  sem perdas aos usuários

(52)

Atributos de qualidade

Qualidades de sistema

Testabilidade

 Facilidade com que podem ser demonstradas as faltas de um  software através de testes  No mínimo, 40% do custo de desenvolvimento de software com  “boa engenharia” é atribuído a testes...  ... se o arquiteto consegue reduzir este custo, o lucro é bem  maior!

(53)

Atributos de qualidade

Qualidades de sistema

Usabilidade

 Quão fácil é para o usuário realizar uma tarefa desejada  usando o sistema?  Que tipo de suporte o sistema provê para o usuário?  Áreas:  Aprendizado das características do sistema: o que o sistema pode fazer  para ajudar no aprendizado do usuário?  Uso eficiente do sistema: o que o sistema pode fazer para que o usuário  o utilize mais eficientemente?  Minimização do impacto de erros: o que o sistema pode fazer para  minimizar o impacto de um erro cometido pelo usuário?  Adaptação do sistema às necessidades do usuário: como o usuário (ou  o próprio sistema) pode adaptar o sistema para tornar as tarefas mais  fáceis  Aumento de confiança e satisfação: o que o sistema faz para dar ao  usuário a confiança de que ele está executando a tarefa corretamente?

(54)

Atributos de qualidade

Qualidades de negócio

Tempo de produção (time­to­market)

Custo e benefício

Tempo de vida projetado

Mercado alvo

Agenda de divulgação

Integração com sistemas legados

(55)

Atributos de qualidade

Qualidades de negócio

Tempo de produção (time­to­market)

 Se há pressão competitiva ou janela de oportunidade restrita...   ... tempo de produção é essencial!  Em geral, reduzido com o uso componentes pré­construídos  Componentes COTS – Commercial Off­The­Shelf

(56)

Atributos de qualidade

Qualidades de negócio

Custo e benefício

 Orçamento não pode ser excedido  Diferentes arquiteturas levarão a diferentes custos de  desenvolvimento  Arquiteturas mais flexíveis são mais caras!!!

(57)

Atributos de qualidade

Qualidades de negócio

Tempo de vida projetado

 Se o sistema é projetado para ter um longo ciclo de vida...  ... mutabilidade, escalabilidade e portabilidade se tornam  extremamente importantes  Porém... isto influencia no custo!  Por outro lado, tais características diminuem custos de  manutenção  Sistemas projetados para um curto ciclo de vida podem ser  mais brandos em relação a estas características!  Será??? Como prever o ciclo de vida?

(58)

Atributos de qualidade

Qualidades de negócio

Mercado alvo

 Considerando softwares de propósito geral, a quantidade de  plataformas de execução determina o mercado em potencial  Exemplo: seu sistema de controle de estoque pode executar:   Em Windows, Linux e Mac?!  Em rede ou standalone?!  Em PC ou dispositivo móvel?  Portabilidade é chave! Usabilidade e desempenho também!  Solução utilizada  Linhas de produto  Núcleo em comum + características específicas

(59)

Atributos de qualidade

Qualidades de negócio

Agenda de divulgação

 Liberação do produto como um todo???  Liberação de funcionalidade base e depois liberação de  funcionalidades adicionais?  Escalabilidade  Flexibilidade  Facilidade de expansão e contração  Diferentes usuários terão diferentes necessidades  Exemplo: Eclipse

(60)

Atributos de qualidade

Qualidades de negócio

Integração com sistemas legados

 Integração com sistemas e tecnologias existentes  Impacto direto na arquitetura  Deve funcionar de acordo com a especificação de terceiros  Deve se adequar à arquitetura de terceiros  Pode haver incompatibilidades!

(61)

Atributos de qualidade

Qualidades de arquitetura

Buildability 

 Facilidade do sistema ser construído, maximizando o  paralelismo de desenvolvimento e manutenção 

Integridade conceitual

 Visão que unifica o projeto arquitetura em todos os níveis 

Corretude e completude

 Análise e verificação formal dos requisitos  Garante que a arquitetura contempla os requisitos  Complementar aos testes

(62)

Atributos de qualidade

Exercício

Quais atributos de qualidade são contemplados na 

arquitetura definida anteriormente (Módulo I)

Como os atributos não contemplados poderiam vir a ser?

Se algum atributo não pode ser contemplado, justifique o 

porquê.

Qualidades de sistema: disponibilidade, mutabilidade, desempenho,  segurança,  testabilidade e usabilidade Qualidades de negócio: tempo de produção, custo e benefício, tempo de  vida projetado, mercado alvo, agenda de divulgação, integração com sistemas  legados Qualidades de arquitetura: buildability, integridade conceitual, corretude e  completude

(63)

Seleção de estilos

Como selecionar um estilo arquitetural?

1. Identificar os principais elementos da arquitetura 2. Identificar o estilo arquitetural dominante 3. Considerar responsabilidades adicionais associadas com a  escolha do estilo 4. Modificar o estilo para atingir objetivos adicionais

(64)

Seleção de estilos

1. Identificar os principais elementos da arquitetura

 Cada elemento arquitetural tem um estilo arquitetural  dominante que reflete as qualidades importantes que devem  ser alcançadas no contexto daquele elemento  A escolha do estilo arquitetural dominante é baseada nos  principais elementos arquiteturais  Os atributos de qualidade sobre cada elemento arquitetural  podem acarretar a utilização ou não de um estilo Fonte:

(65)

Seleção de estilos

2. Identificar o estilo arquitetural dominante

 O estilo dominante pode ser modificado para alcançar objetivos  particulares  Se nenhum estilo conhecido parece ser apropriado, o arquiteto  deve projetar e documentar um novo estilo  As decisões sobre escolhas baseadas em atributos de qualidade  dentro de um estilo devem ser documentadas

(66)

Seleção de estilos

3. Considerar responsabilidades adicionais associadas com 

a escolha do estilo

 A escolha de um estilo arquitetural introduzirá  responsabilidades adicionais  Por exemplo:  Se o estilo é “Quadro negro”, então deve­se gerenciar os  mecanismos para o controle do quadro negro  Se o estilo é “cliente­servidor”, deve­se gerenciar os  protocolos de interação  Responsabilidades adicionais devem ser atribuídas a  elementos arquiteturais existentes ou a novos elementos  criados para este fim Fonte:

(67)

Seleção de estilos

4. Modificar o estilo para atingir objetivos adicionais

 Pode­se alterar o estilo arquitetural caso este necessite ser adaptado  devido a atributos de qualidade ou até mesmo funcionalidade  Exemplo: cliente­servidor  Adaptação: broker Cliente Broker A Broker B Requisita serviço Bridge Servidores Proxy Proxy Servidores

(68)

Seleção de estilos

Exemplo

1. Identificar os principais elementos da arquitetura

 Sistema: acadêmico Módulo de  armazenamento de  dados Módulo de acesso do  usuário

(69)

Seleção de estilos

Exemplo

2. Identificar o estilo arquitetural dominante

Módulo de  armazenamento de  dados Módulo de acesso do  usuário Acesso à máquina  do BD só via rede Utiliza banco de outra aplicação (legada) Não há confiança na  disponibilidade da  máquina do BD Deve executar  na Internet Deve ser fino! Não deve requerer instalação! Deve ser possível acessar de qualquer  lugar Deve ter alta disponibilidade

(70)

Seleção de estilos

Exemplo

3. Considerar responsabilidades adicionais associadas com 

a escolha do estilo

 Estilo dominante escolhido: Cliente­servidor  Estilo secundário: Repositório  Responsabilidades: considerar protocolo de comunicação Cliente Servidor  Rede/HTTP

(71)

Cliente/ Servidor Cliente/ Servidor Cliente/ Servidor Repositório

Seleção de estilos

Exemplo

4. Modificar o estilo para atingir objetivos adicionais

Cliente servidor de 2 camadas e repositório com backup Módulo Servidor (Dados) Módulo cliente (Acesso do usuário) Módulo Servidor (Web) Módulo Backup (Dados) leitura leitura/escrita sincronização leitura/escrita consulta/ atualização

(72)

  72

Seleção de estilos

Exemplo

4. Modificar o estilo para atingir objetivos adicionais

 Objetivos atingidos! Módulo Servidor (Dados) Módulo cliente (Acesso do usuário) Módulo Servidor (Web) Módulo Backup (Dados) Aplicação legada leitura leitura/escrita sincronização leitura/escrita consulta/ atualização ­ Alta disponibilidade ­ Fino ­ Executar na Internet ­ Acesso de qualquer lugar ­ Não requer instalação ­ Acesso à maquina do BD  só via rede ­ Banco de outra aplicação ­ Não há confiança na  disponibilidade 

(73)

Seleção de estilos

Exercício

Qual ou quais estilos arquiteturais você utilizaria para os 

sistemas listados... (lista apresentada em sala)

Programa principal/Subrotina (Main Program/Subroutine) Invocação remota de procedimento (Remote Procedure Call ­ RPC) Camadas (Layered) Invocação/Retorno (Call/Return) Interpretador (Interpreter) Baseado em regras (Rule­based) Máquina virtual (Virtual Machine) Seqüencial (Batch Sequential) Fluxo de dados (Data­Flow) Repositório (Repository) Centrado em dados (Data­Centered) Comunicação de processos (Communicating Processes) Baseado em eventos Componentes independentes (Independent Components)

(74)

Seleção de visões

Quais são as visões arquiteturais relevantes para o 

sistema sendo desenvolvido?

Cliente

(75)

Visões arquiteturais

Relembrando...

Modelo “4+1” (Rational Software)

Visão

Lógica DesenvolvimentoVisão de

Visão de

Processo FísicaVisão

(76)

Visões arquiteturais

Relembrando...

Visão Lógica

“Retrato estático” dos relacionamentos existentes entre as 

entidades do sistema

Pode possuir duas ou mais representações, dentre elas, 

uma conceitual e outra de esquema de banco de dados

Visão Lógica

(77)

Visões arquiteturais

Relembrando...

Visão de Processo

Descreve aspectos de sincronização e concorrência

Descrição de processos concorrentes

Diferentes linhas de execução (threads), entidades ativas

Visão de Processo

(78)

Visões arquiteturais

Relembrando...

Visão de Desenvolvimento

Descreve a organização do software em seu ambiente de 

desenvolvimento

ComponentesLinguagens Visão de Desenvolvimento

(79)

Visões arquiteturais

Relembrando...

Visão Física

Descreve o mapeamento do software para o hardware

Distribuição de componentes

Verificação de alta disponibilidade, confiabilidade, 

desempenho...

Também chamada “deployment”

Visão  Física

(80)

Visões arquiteturais

Relembrando...

Cenários (+1)

Cenários de funcionamento do sistema diretamente 

ligados à arquitetura

Principais casos de uso

Lembram de RUP? 

Centrado em arquitetura! Cenários

(81)

Seleção de visões

Três passos:

1. Produza uma tabela de visões

2. Combine visões

(82)

  82

Seleção de visões

1.

Produza uma tabela de visões

 De acordo com as características do sistema Stakeholder Lógica      Processo      Desenvolvimento      Física Gerente Desenvolvedor Testador Cliente Usuário final Analista Arquiteto d v v v v d d v v v d v d d d d v d d = informação bem detalhada a = alguns detalhes v = visão geral Legenda:

(83)

Seleção de visões

2. Combine visões

Considerando que para cada visão apresentada 

anteriormente, tem­se um ou mais modelos...

... ficaria impraticável criar um modelo na perspectiva de 

cada uma das visões definidas anteriormente

Procure visões na tabela que requeiram apenas uma 

“visão geral” e com poucos stakeholders envolvidos

 Lógica: 4 v  Física: 3 stakeholders

Os modelos gerados para esta visão podem ser 

simplificados

(84)

  84

Seleção de visões

2. Combine visões

A visão de processo poderia ser combinada à de 

desenvolvimento (Estereótipos)

Stakeholder Lógica      Processo      Desenvolvimento      Física Gerente Desenvolvedor Testador Cliente Usuário final Analista Arquiteto d v v v v d d v v v d v d d d d v d d = informação bem detalhada a = alguns detalhes v = visão geral Legenda:

(85)

Seleção de visões

3. Priorize visões

Uma vez definidas as visões, deve­se estabelecer uma 

ordem de prioridade

Sempre começar uma nova visão após terminar outra

Exemplo de ordem:

 Visão lógica  Visão física  Visão de desenvolvimento

(86)

  86

Rastreabilidade bidirecional

Rastreamento: requisitos     código e vice­versa 

durante o ciclo de desenvolvimento do software

Requisitos Rastreamento “para frente” (Forward Traceability) Código Public class{     ... } Public class{     ... } Public class{     ... } Public class{     ... } Public class{     ... } Evita código desnecessário Revisões mais rápidas Maior facilidade

(87)

Rastreabilidade bidirecional

Rastreamento: requisitos     código e vice­versa 

durante o ciclo de desenvolvimento do software

Requisitos Código Public class{     ... } Public class{     ... } Public class{     ... } Public class{     ... } Public class{     ... } Rastreamento “para trás” (Backward Traceability) Manutenção Depuração Evolução

(88)

Rastreabilidade bidirecional

Apontada como grande “arma” para o 

desenvolvimento...

CMMi (

Capability Maturity Model Integration

)

Software Engineering Institute – SEI

Manter rastreabilidade bidirecional do desenvolvimento é 

essencial para um processo de software de sucesso

(89)

Exercício final

Refaçam a arquitetura do sistema definido 

anteriormente (Módulo I)

Levando em conta a seleção de estilos

Levando em conta a seleção de visões

Levando em conta atributos de qualidade

Justificando escolhas:

 Por que usou estes estilos?  Por que usou estas visões?  Como a arquitetura “alcança” os atributos de qualidade definidos?

Referências

Documentos relacionados

Comunicação orientada a mensagens • Chamada de procedimento remoto e invocação remota de objetos contribuem para esconder a comunicação em sistemas distribuídos, geralmente

Não há dúvida que o resgate da inteligência insular matriarcal é indispensável na Antropologia e na Psicologia para operar lado a lado com a inteligência polarizada

O Projeto Pastoral das Escolas de Evangelização Santo André, da mesma forma que o apóstolo André, tem por missão buscar Pedros que sirvam, amem e anunciem o Senhor Jesus

Vassouras, Estado do Rio de Janeiro, no uso de suas atribuições legais, diante da homologação do resultado final do Concurso Público – 2019 – para

Para tempo de maturação, foram encontradas diferenças significativas para todos os parâmetros de qualidade, com exceção de pH, enquanto que para os atributos sensoriais,

Inicialmente, sabendo-se que a oxidação de carboidratos inicia a glicoxidação de proteínas e que íons metálicos como cobre podem estar envolvidos neste processo, complexos

Neste trabalho demonstramos, pela primeira vez no esôfago aumento da densidade de células epiteliais da mucosa e de células musculares, bem como, aumento do número de

Atividade fungicida do crescimento micelial do fungo fitopatogênico Thielaviopsis paradoxa após 96 horas de incubação, de acordo com diferentes concentrações do óleo essencial