0% acharam este documento útil (0 voto)
193 visualizações58 páginas

Arquitetura de Sistemas

O documento discute arquitetura de sistemas, incluindo definições, documentação, modelos de representação, estilos arquiteturais e arquitetura de sistemas web e mobile. O texto fornece detalhes sobre como decompor sistemas em subsistemas e como escolher uma arquitetura adequada aos requisitos do projeto.

Enviado por

Augusto Oliveira
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
193 visualizações58 páginas

Arquitetura de Sistemas

O documento discute arquitetura de sistemas, incluindo definições, documentação, modelos de representação, estilos arquiteturais e arquitetura de sistemas web e mobile. O texto fornece detalhes sobre como decompor sistemas em subsistemas e como escolher uma arquitetura adequada aos requisitos do projeto.

Enviado por

Augusto Oliveira
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 58

ARQUITETURA DE

SISTEMAS
Cleviton Monteiro ([email protected])
Roteiro
• Definição
• Documento de arquitetura
• Modelos de representação da arquitetura
• Estilos arquiteturais
• Arquitetura de sistemas web
• Arquitetura de sistemas mobile
Arquitetura e Projeto

Modelo de
Análise e Projeto
Modelo de
Casos de Uso
Projeto
(projetar) Documento de
Arquitetura

Glossário

Requisitos Projeto de
Banco de dados

Estórias
Protótipos
Arquitetura de software

• Sistemas grandes são decompostos em subsistemas

• Subsistemas
• Fornecem um conjunto de serviços relacionados
• Ex:
• Autenticação
• Comunicação
• Suporte ao acesso a dados
• Biblioteca de utilitários (como usar no projeto da disciplina?)
• Subsistemas diretamente relacionados ao negócio (Gestão Financeira)
• Log de erros (como usar no projeto da disciplina?)
Arquitetura de software
• Exemplo
O que é arquitetura de software?

“É a estrutura que engloba os subsistemas e componentes


do software, definindo as suas propriedades visíveis
externamente, o relacionamento entre eles e os
mecanismos de controle” (Pressman, 2014)
Arquitetura de software

Além da estrutura:
• Decisões dos engenheiros para atender aos requisitos
(Martin Fowler, 2002; Pressman, 2014)
• Exemplo da arquitetura distribuída com WCF

• Protocolos utilizados
• Qual protocolo de comunicação Servidor-App será usado no projeto?

• Funcionalidades dos componentes


• Distribuição física dos componentes
• Capacidade de evolução
• Como vocês vão incorporar interface web?
Arquitetura de software

• Foca em questões como:


• Performance
• Confiabilidade
• Escalabilidade Requisitos não-funcionais!
• Testabilidade
• Manutenibilidade
Arquitetura de software
Arquitetura

Projeto

Código
Níveis de abstração

Arquitetura Projeto Código


Arquitetura de software

Vantagens de projetar e documentar a arquitetura:

• Facilitar a comunicação com os stakeholders


• Promover uma análise criteriosa sobre os requisitos
críticos do projeto já no início do projeto, como:
• Desempenho, confiabilidade e facilidade de manutenção
• Projeto: manter dados off-line no mobile?
• Promover o reuso de software em larga escala, pois
sistemas com requisitos semelhantes podem ter a mesma
arquitetura
• É possível elaborar um projeto de arquitetura para uma linha de
produto
Impactos da escolha da arquitetura

Exemplos:
- Em um sistema onde a disponibilidade é um requisito
crítico:
- Inclua componentes redundantes
- Projete de modo que possa ser possível substituir componentes
sem parar o sistema

- Por outro lado, se o desempenho for um requisito crítico:


- Utilize uma estrutura menos granular
- Redução da comunicação entre os subsistemas
Conflitos na escolha da arquitetura
Exemplos:
- Desempenho:
- Estruturas menos granulares

- Manutenção
- Estruturas mais granulares

E se for preciso desempenho e facilidade de manutenção?

Arquiteto vai ter que escolher!


E documentar a decisão!
Documento de arquitetura
O Produto da fase de projetar arquitetura

• Stakeholders (usuários, sistemas externos, desenvolvedores)

• Representações gráficas da arquitetura


• Componentes da arquitetura (servidores, clientes, banco de dados,
subsistemas, camadas, padrões de projeto)

• Conexão entre os componentes


• Chamada de rotinas, variáveis compartilhadas, protocolos cliente-
servidor, broadcasting, eventos

• Decisões tomadas
• Restrições
Exemplo de representação gráfica
Servidor Web +
(Webservice)
Cliente web
(navegador)

REST + JSON
XML/SOAP

Internet
Internet

Operadora de
LAN cartão de crédito

Cliente Mobile
(aplicativo)

Servidor de banco
de dados
Exemplo de representação gráfica
4 + 1 visões (P. Krutchen)
Visão lógica
• Descreve requisitos comportamentais e a decomposição
do sistema em um conjunto de abstrações
• Diagramas de classes, sequência e colaboração
Visão de implementação
• Descreve os módulos do sistema
• Módulos são mais abstratos que classes e objetos
Visão de implementação
• Exemplo de um sistema usando MVC
Visão de implantação (fisica)
• Descreve como a aplicação é instalada e
como executa em uma rede de
computadores
• Onde é executado (computador) cada
componente da arquitetura?

• Visão usada para avaliar requisitos não-


funcionais, como: desempenho,
disponibilidade, confiabilidade
Visão de processo
• Descreve os processos do sistema e como eles se
comunicam
• Útil quando se tem múltiplos processos ou threads
concorrentes
• Diagramas de atividades podem ser usados
Visão de casos de uso

• Descreve a funcionalidade do sistema em termos de


casos de uso
Documento de arquitetura

Qual modelo de documento de arquitetura usar no projeto?


Estilos arquiteturais

• Problemas se repetem na engenharia de software

• Documentou-se grupos de estilos capazes de tratar


problemas recorrentes:
• Arquiteturas centrada em dados
• Arquiteturas de fluxo de dados
• Sistemas distribuídos
• Arquiteturas de chamada e retorno
Arquitetura centrada em dados
• Repositório de dados é o centro da arquitetura
• Clientes (subsistemas, sistemas) acessam o repositório
para inserir, recuperar, alterar, remover e também trocar
dados entre eles

Fonte: Pressman, 2014


Arquitetura centrada em dados
• Promove a integração entre componentes e sistemas
• Componentes e sistemas podem mudar, ou serem
adicionados novos, sem impactar nos demais

Fonte: Pressman, 2014


Arquitetura de fluxo de dados
• Dados de entrada são transformados em dados de saída
através de uma série de cálculos e transformações
Ex: uso de filtros

Fonte: Pressman, 2014


Arquitetura de fluxo de dados
• As entradas e saídas têm formato pré-definido
• Um componente não precisa saber como os outros
funcionam

Fonte: Pressman, 2014


Sistema distribuído
• Módulos distintos cooperam
• Podem estar no mesmo nó ou em nós separados
Sistema distribuído
• Comunicação por protocolos abertos ou proprietários
• Aplicação em sistemas tolerante a falhas
Sistema distribuído
• Vantagens
• Distribuição de carga
• Reuso
• Especialização

• Desvantagem
• Performance/disponibilidade
• Sujeito à conectividade
• Segurança
Sistema distribuído
• Variação importante: Cliente-Servidor
• Cliente: interface com o usuário (solicita informação ao servidor)
• Servidor: serviço especializado (processamento, acesso a dados,
regras de negócios)
• Prove serviços para vários clientes

• Web
• Servidor Web
• IIS, Apache, Tomcat, etc.
• Cliente
• Navegador, Aplicativos, Softwares desktop
Arquitetura de chamada e retorno

• Possibilitam uma estrutura relativamente fácil de


modificar e escalar

• Exemplos:
• Arquitetura de Programa principal/Subprogramas
• Arquitetura em camadas (OO)
Arquitetura Programa principal /
subprograma
• Arquitetura hierarquizada
• Programa principal utiliza subprogramas
• Os subprogramas pode utilizar outros subprogramas (e
assim por diante
Arquitetura orientada a objetos

• Componentes do sistema são encapsulados em objetos

• Objetos contêm os dados (atributos) e fornecem


operações para manipulá-los (métodos, funções)

• A comunicação e coordenação entre os componentes é


realizado através da troca de mensagens (métodos dos
objetos)
Arquitetura dividida em camadas
• Bastante utilizada em conjunto com a arquitetura
orientada a objetos
• A camada mais externa possui componentes de interface
com o usuário
Arquitetura dividida em camadas
• As camadas intermediárias possuem as regras de
negócio do sistema e os serviços utilitários
• As camadas mais internas possuem componentes de
interface com o sistema operacional / repositório de
dados
Uso de estilos arquiteturais

• Pode-se utilizar mais de um estilo no mesmo sistema

Ex:
• Arquitetura em camadas + centradas em dados
Uso de estilos arquiteturais
Escolhas comuns

• Sistemas onde existem apenas requisitos funcionais e


simples -> arquitetura simples / monolítica

• Sistemas que exigem confiabilidade -> Redundância

• Sistemas de alto desempenho -> Concorrência

• Sistemas fáceis de modificar -> Camadas


ARQUITETURA DE
SISTEMAS WEB
Arquitetura de sistemas web

• Sistemas web têm sido bastante utilizados


• Cliente (browser) – Servidor (servidor web – IIS, Apache, Tomcat)

• Alguns estilos têm se consolidado


• Arquitetura em camadas
• MVC
• Service Oriented Architecture (SOA)
Arquitetura de sistemas web

Fonte: https://msdn.microsoft.com/en-us/library/ee658099.aspx
Arquitetura de sistemas web
MVC

Fonte: Pressman, 2014


Padrão MVC
Outros padrões
MVP - Model View Presenter
MVA – Model View Adapter
MVVP – Model View ViewModel
Necessidades <-> Arquitetura
• Facilidade de identificação de problemas
• Log
• Como vocês vão fazer isso no projeto?

• Deploy contínuo
• Nova versão colocada automaticamente no servidor de testes ou
produção
• Testes automáticos validados
• Colocar novas versões no ar sem parar o sistema
• Como vocês vão fazer isso no projeto?

• Monitoramento do uso do sistema


• Usuários únicos, tempo de carregamento das informações, telas mais
acessadas, erros
• Como vocês vão fazer isso no projeto?
ARQUITETURA DE
SISTEMAS MOBILE
Arquitetura de sistemas mobile
Única camada (thin client)
• View – Browser
• Vantagem:
• Cross-plataforma (develop once, run anywhere)
• Aproveita a familiaridade de desenvolvedores web
• Desvantagens
• Suporte limitado a serviços nativos (câmera, calendário, sensores)
• Funcionalidades off-line limitadas

HTML + CSS + JAVASCRIPT

BROWSER APP NATIVO (browser)


Arquitetura de sistemas mobile
Multicamadas (rich client)
• Vantagens:
• Melhor performance
• Disponibilidade off-line
• Acesso a serviços nativos (câmera, apps, sensores)
• Desvantagens
• Específico para uma plataforma
• Curva de aprendizado de uma nova tecnologia (APIs, Arquitetura)

Activities, Services,
Broadcast receivers, content
providers… (android)

Full App Biblioteca nativa


Arquitetura de sistemas mobile
Híbrido (Phone gap, Titanium, AppDeck, etc.)
• Vantagens:
• HTML + Javascript (familiaridade de desenvolvedores web)
• Pode ter disponibilidade off-line
• Cross-plataform
• Desvantagens
• Ainda precisa de código específico para cada plataforma
• Curva de aprendizado de uma nova tecnologia (APIs, Arquitetura)
• Acesso limitado a serviços nativos (câmera, apps, sensores)

Html + CSS + Javascript

App middleware (API)

Biblioteca nativa
Arquitetura de sistemas mobile
Ex: Phone Gap
Arquitetura de sistemas mobile

Particularidades

• Diferentes tamanho de tela


• Capacidade de processamento
• Recursos disponíveis (GPS, tamanho da memória,
acelerômetro, capacidade de bateria, recursos de
interface com o usuário, disponibilidade de
conectividade, ...)
Sistemas web + Mobile

• Compartilhamento de informações

Full App Web System


Sistemas web + Mobile

• Onde ficam as regras de negócio? Duplicadas? Reuso?

SOA Service Oriented Architecture


Projeto
Entrega 4:
- Documento de arquitetura
- Componentes da arquitetura
- Conexão entre os componentes
- Decisões de arquitetura
- Diagrama de classes
Decisões!

• Qual será o modelo de documento de arquitetura usado?


• Vai haver biblioteca de utilitários do sistema? Onde fica?
• Como será implementado o log de erros?
• Qual protocolo de comunicação Servidor-App será usado
no projeto?
• Como incorporar interface Web futuramente?
• Os dados vão ficar off-line no mobile? Como?
• Como fazer deploy automático e contínuo?
• Como monitorar o uso do sistema?

Você também pode gostar