Buscar

Arquitetura de Sistemas 01

Prévia do material em texto

Engenharia de 
Software
Prof. MSc. Edilberto Silva
prof.edilberto.silva@gmail.com
http://www.edilms.eti.br 
Arquitetura de Software
Definição: Software
• Conjunto de instruções (programa de 
computador) que, quando executadas, 
produzem a função e desempenho desejados.
• Inclui documentação sobre operação e uso 
dos programas.
• Software é um elemento de sistema lógico, 
não físico.
• Software não se desgasta, mas se deteriora.
[Pressman]
Prof. Edilberto Silva – www.edilms.eti.br
Definição: Sistema
• Um conjunto de componentes inter-
relacionados organizados para atingir um 
certo objetivo.
• É organizado para executar certo método, 
procedimento ou controle ao processar 
informações.
• Automatiza ou apóia a realização de 
atividades humanas através do 
processamento de informações.
Prof. Edilberto Silva – www.edilms.eti.br
Definição: Engenharia de Sistemas
• Um conjunto de componentes inter-relacionados 
organizados para atingir um certo objetivo.
• É organizado para executar certo método, 
procedimento ou controle ao processar informações.
• Automatiza ou apóia a realização de atividades 
humanas através do processamento de informações.
Prof. Edilberto Silva – www.edilms.eti.br
• “Definição e representação de uma estrutura para a 
composição de um sistema em termos de seus
componentes computacionais, suas propriedades e 
interações.” [Pressman]
• “A arquitetura de software de um programa ou sistema 
computacional é a estrutura ou estruturas do sistema que 
abrange os componentes de software, as propriedades 
externamente visíveis desses componentes e as relações 
entre eles.” [Kazman]
Definição: Arquitetura de Software
Prof. Edilberto Silva – www.edilms.eti.br
Motivação: Arquitetura de Software
• O aumento do tamanho e da complexidade 
dos softwares
• A estrutura do software é importante, e 
adotar a estrutura correta pode trazer 
benefícios
Quem faz ? 
• O Arquiteto de Software.
Prof. Edilberto Silva – www.edilms.eti.br
O Arquiteto de Software
Prof. Edilberto Silva – www.edilms.eti.br
Motivação: Complexidade dos projetos de 
software
Projetos simples
• Podem ser construído 
por uma única pessoa
• Pouca modelagem 
• Processo de 
construção simples
• Técnicas simples
• Ferramentas simples
Prof. Edilberto Silva – www.edilms.eti.br
Motivação: Complexidade dos projetos de 
software
Projetos complexos
• Exigem arquiteturas
• Trabalho em equipe com 
especialistas
• Mais modelagem
• Processos bem-definidos
• Técnicas sofisticadas
• Ferramentas mais 
“poderosas”
Prof. Edilberto Silva – www.edilms.eti.br
Objetivo e Abordagem
Objetivo
• Diminuir a distância entre o projeto e a implementação do software
Prof. Edilberto Silva – www.edilms.eti.br
Arquitetura x Projeto
Arquitetura
� Componentes e conectores
� Restrições sobre componentes e conectores
� Composição de componentes
Projeto
� Procedimentos e interfaces
� Algoritmos e estruturas de dados
� Composição procedural
X
Prof. Edilberto Silva – www.edilms.eti.br
Definição: Arquitetura de Software
• A Arquitetura de Software (AS) de um sistema define 
sua estrutura de alto nível, ou seja, denota sua 
estrutura organizacional como uma coleção de 
componentes interativos
• Descrição mais abstrata no ciclo de vida do software
• Suprime detalhes da implementação
Prof. Edilberto Silva – www.edilms.eti.br
Definição: Arquitetura de Software
• Define apenas os aspectos estruturais importantes
• Fornece uma base para as outras fases de 
desenvolvimento do software
• A arquitetura pode ser descrita usando-se linhas e caixas 
de diagramas acompanhados por uma descrição textual. 
(UML !) 
• Separa as funcionalidades das interações
Prof. Edilberto Silva – www.edilms.eti.br
Definição: Arquitetura de Software
Outras definições
• “Arquitetura de software inclui o conjunto de decisões
significantes sobre a organização de um software: 
– Seleção dos elementos estruturais e suas interfaces
– Comportamento entre esses elementos
– Composição destes elementos estruturais e de 
comportamento em subsistemas maiores
– Estilo arquitetural que guia esta organização” [Booch]
Prof. Edilberto Silva – www.edilms.eti.br
Mais definições ...
• “Arquitetura de software é a estrutura de um programa ou um 
sistema, seus relacionamentos e os princípios que guiam o seu
projeto e a sua evolução no tempo.” [Garlan]
• “A descrição da arquitetura de software é um passo
intermediário entre a análise de requisitos e o projeto. Esta
descrição consiste de elementos arquiteturais, as interações
entre estes elementos, e as restrições sobre estes elementos e 
sobre as suas interações.” [Perry]
• “Uma arquitetura de software é um conjunto de componentes
genéricos junto com uma descrição de propriedades, regras de 
como estes componentes podem interagir, e estilo de interação
destes componentes.” [Jackson]
Definição: Arquitetura de Software
Prof. Edilberto Silva – www.edilms.eti.br
E ainda mais ...
• “Uma arquitetura de software deve conter: a definição dos 
elementos de projeto que compõe o software; a descrição
das interações entre estes elementos; os padrões de 
composição dos elementos; e um conjunto de restrições
sobre estes padrões.” [Shaw]
• “Arquitetura de software é a organização incluindo seus
componentes, o relacionamento componentes e com o 
ambiente e a evolução dos componentes.” [IEEE]
Definição: Arquitetura de Software
Prof. Edilberto Silva – www.edilms.eti.br
AS: Importância
• Facilitador na comunicação entre todas as partes
interessadas no desenvolvimento do software
• Estabelece as decisões iniciais de projeto que terão
impacto profundo no resultado final do software
• Sendo assim, vale a pena fazer um modelo que é 
relativamente pequeno, intelectualmente inteligível de 
como o sistema é estruturado e como os componentes
trabalham em conjunto
• Esse modelo é transferível para outros projetos de 
software e representam um conjunto de abstrações que
permitem descrever a arquitetura de modo previsível.
Prof. Edilberto Silva – www.edilms.eti.br
AS: Benefícios
• Reuso de elementos de projeto permitindo maior rapidez
na construção do software
• Definindo-se uma arquitetura é possível predizer algumas 
características do software
• Facilita a comunicação entre os desenvolvedores do 
software
• Permite um entendimento maior da evolução do software
– Possibilidade de análise da descrição da arquitetura nas fases iniciais do 
desenvolvimento
– Consistência da configuração, componentes e conectores
– Completude
– Propriedades não funcionais
– Conformidade com um determinado estilo arquitetural
Prof. Edilberto Silva – www.edilms.eti.br
AS: Elementos e Componentes
Elementos essenciais
• Componentes
• Conectores
• Configuração
Componentes
• Denotados por termos como “elementos arquiteturais”, 
“componentes genéricos”, “elementos do projeto”..
• Modela a computação e o armazenamento de informações
• Desenvolvido independentemente
• Exemplos de componentes: Cliente, Servidor e até uma 
aplicação inteira
Prof. Edilberto Silva – www.edilms.eti.br
Arquitetura de Software
Configuração
Componente Conector
Prof. Edilberto Silva – www.edilms.eti.br
Exemplos de componentes e formas 
de interação
• Módulo
– Chamada de procedimentos
– Dados compartilhados
• Objeto
– Invocação de método
• Processo
– Passagem de mensagem
• Arquivo de dados
– Acesso de leitura e escrita
• Banco de dados
– Consulta SQL
Prof. Edilberto Silva – www.edilms.eti.br
O Arquiteto de Software
• Quem é ?
– Arquiteto de software é um papel recente na indústria de 
software.– Arquiteto de software NÃO é um desenvolvedor sênior!!!
• Desenvolvedor é especialista e tático.
• Arquiteto é generalista e estratégico.
"O arquiteto ideal deve ser uma pessoa erudita, um matemático, 
familiarizado com estudos históricos, um estudioso aplicado de filosofia, 
conhecedor de música, que não desconheça medicina, detentor de saber 
jurídico e familiarizado com astronomia e cálculos astronômicos."
Vitruvius, há aproximadamente 25 anos a.C.
Prof. Edilberto Silva – www.edilms.eti.br
O Arquiteto de Software
• Habilidades
– Liderança técnica
– Hábil negociador
– Possui conhecimentos de projeto e programação
– Possui conhecimentos do domínio da aplicação
– É capaz de tomar decisões e conduzir times de projetos
– Tem ampla habilidade para gerenciar riscos técnicos de 
projetos
Prof. Edilberto Silva – www.edilms.eti.br
O Arquiteto de Software
• Principais tarefas
– Trabalhar em intensa e forte colaboração com a equipe.
– Apoiar a equipe na investigação dos pontos de relevância
técnica de um projeto.
– Atuar como um coach.
– Identificar os mecanismos arquiteturais relevantes.
– Motivar a equipe para a investigação e resolução destes
mecanismos.
– Apoiar a equipe do início ao fim do projeto.
Prof. Edilberto Silva – www.edilms.eti.br
O Arquiteto de Software
• Atividades e produtos (segundo o RUP) 
Prof. Edilberto Silva – www.edilms.eti.br
O Arquiteto de Software
• Responsabilidades
– “Atacar” os principais riscos cedo e continuamente.
– Garantir que o produto entregue tem valor para o cliente.
– Manter o foco no software executável.
– Acomodar as mudanças.
– Estabelecer uma arquitetura “executável” no início do 
projeto.
– Construir o sistema usando componentes.
– Trabalhar sob os preceitos da qualidade contínua.
– Promover o balanceamento das prioridades: 
• Requisitos, riscos, mercado e arquitetura.
Prof. Edilberto Silva – www.edilms.eti.br
O Arquiteto de Software
• Processos de arquitetura (segundo o RUP) 
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Variáveis
– Produtividade no desenvolvimento (desde a concepção à 
implantação) 
– Agilidade na manutenção
– Integração com sistemas legados
– Escalabilidade
– Redução do custo de produção, treinamento e suporte ao
usuário
– Agilidade e baixo custo na atualização de versões
– Segurança
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Arquiteturas monolíticas
– Processamento centralizado
– Terminais Burros
– Redes de comunicação lentas
• Metodologia de Desenvolvimento
– Linguagem Cobol
– Linguagens de 4a geração (Natural) 
– Bancos de dados hierárquicos, rede e "relacional"
– Análise Estruturada Clássica
• Características das Aplicações
• Aplicações corporativas batch e on-line
• Aplicações com interface com o usuário baseada em caracteres.
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
Arquiteturas monolíticas
• Vantagens
– Facilidade de gerência da
segurança
– Facilidade de gerência de 
usuários
– Facilidade de gerência de 
aplicações
– Facilidade de integração
de sistemas
• Desvantagens
– Processamento centralizado 
(escalabilidade vertical) 
– Alto custo (milhões de 
dólares/ano) 
– Arquiteturas de hardware, 
software e comunicação 
totalmente proprietárias levando 
à dependência do fornecedor
– Interface com o usuário limitada, 
baseada em caractere
– Usuário sem autonomia
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
Arquiteturas distribuídas
– Servidores de serviços compartilhados (ex. arquivos, 
impressão) com boa capacidade de processamento
– Estações de trabalho com bom poder de processamento com 
aplicações locais, interface gráfica
– Redes com boa velocidade (10, 100, 1000 Mbps) 
– Metodologia de Desenvolvimento
• Linguagens Clipper, Pascal, Cobol
• Gerenciamento de arquivos específico das linguagens;
• Análise Estruturada
– Características das Aplicações
• Aplicações departamentais on-line com até dezenas de usuários
• Aplicações acessam servidor através de mapeamento de unidades de 
disco ou protocolos proprietários
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
Arquiteturas distribuídas
• Vantagens
– Processamento espalhado 
permitindo o uso de aplicações 
nas estações
– Servidores e estações de baixo 
custo
– Arquiteturas de software e 
comunicação proprietárias 
mas com recursos de 
integração entre plataformas
– Interface com o usuário 
montada localmente e com 
recursos gráficos
– Usuário com autonomia total
• Desvantagens
– Dificuldade de gerência da segurança
– Dificuldade de gerência de usuários
– Dificuldade de gerência de aplicações
– Dificuldade de integração de sistemas
– Aplicações são executadas nas estações 
de forma independente, podendo 
acessar arquivos no servidor, mas 
sobrecarregando muito a rede
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
Arquiteturas cliente-servidor
– Aplicações divididas em dois módulos: o cliente e o servidor
– Cliente e servidor comunicam-se através de protocolos de 
comunicação proprietários voltados para serviços
– Metodologia de Desenvolvimento
• Linguagens Delphi, Visual Basic, Java, etc
• Servidores de Banco de Dados Relacional
• Análise Estruturada e Orientada a Objetos
– Características das Aplicações
• Aplicações departamentais on-line e com até dezenas de usuários;
• Aplicações com interface gráfica com o usuário.
• Aplicação cliente sem regra de negócio e servidor de banco de dados 
com regra de negócio em Stored Procedures.
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
Arquiteturas cliente-servidor
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Arquiteturas cliente-servidor
– Vantagens
• Maior performance, já que a regra de negócio está no próprio
banco de dados
– Desvantagens
• Soluções de Stored Procedures são proprietárias o que amarra
a aplicação ao banco de dados
• Perda de escalabilidade horizontal
• Desenvolvimento em linguagens de programação proprietárias
dos bancos de dados, normalmente procedurais ou de scripts, 
com baixa reutilização de código
• Maior dificuldade de implementação
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
Aplicações Multi-Camadas (Multi-tier) 
• Consiste numa evolução do modelo cliente servidor introduzindo uma
ou mais camadas intermediárias de software.
• Três Camadas
– Consiste em três camada de software.
– Camada de Interface
• Responsável pela interface com o usuário.
– Camada de Regras de Negócio
• Responsável pela regras de negócio.
– Camada de Dados
• Responsável pelo acesso aos dados (normalmente em banco
de dados).
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• 2 camadas
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• 3 camadas
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
3 camadas
MVC
• Model (Database)
• View (client)
• Controller
• Modelo: representa os dados da aplicação e as regras de negócio.
• Controlador: define o comportamento da aplicação.
• Visão: apresenta os dados aos usuários.
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
Multi-camadas
– Possui as três camadas anteriores com a adição de subcamadas na
camada de regra de negócio, normalmente para a integração com 
sistemas legados.
– Desvantagens
• Maior dificuldade de implementação.
– Vantagens
• Grande facilidadede gerência de segurança, de aplicações e de usuários
• Grande facilidade de integração de sistemas: administração de 
componentes
• Independência de banco de dados
• Grande escalabilidade horizontal através da criação de clusters de 
servidores de aplicação
• Boa performance
• Maior flexibilidade para a estruturação da arquitetura da aplicação e 
para incorporar o uso de outras tecnologias
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Multi-camadas
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Multi-camadas
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Arquiteturas P2P
– Uma tecnologia que permite a qualquer dispositivo com 
acesso a uma rede prover serviços a outros dispositivos da
mesma rede.
– Um peer em uma rede P2P age como um cliente e como um 
servidor de uma arquitetura cliente/servidor tradicional
– Compartilhamento de Recursos:
• Informações
• Recursos computacionais:
– Espaço em disco, Processamento, Recursos de rede
– Algumas aplicações P2P: mensagem instantânea, 
compartilhamento de arquivos, computação distribuída
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Arquiteturas P2P
– Arquitetura Cliente/Servidor Tradicional
• Responsabilidades do cliente
– Enviar pedidos de um serviço qualquer
– Receber as respostas de um pedido feito a um serviço
• Responsabilidades do Servidor
– Receber pedidos de serviço
– Processar os pedidos e executar o serviço requerido
– Enviar a resposta com os resultados do serviço requerido
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Arquiteturas P2P
– Responsabilidades do peer, como cliente
• Enviar pedidos de serviço a outros peers
• Receber as respostas de pedidos de serviço feitos a outros
peers
– Responsabilidades do peer, como servidor
• Receber pedidos de serviço de outros peers
• Processar os pedidos e executar o serviço requerido
• Enviar a resposta com os resultados do serviço requerido
• Propagar os pedidos de serviço a outros peers
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• P2P
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Arquiteturas P2P híbridas
– Responsabilidades do Cliente
• Registrar no servidor seus serviços disponíveis
• Enviar ao servidor pedidos de busca por serviços e receber respostas
contendo listas de peers com os serviços desejados
• Enviar a outros peers pedidos de serviço e receber as respostas
desses pedidos
• Receber de outros peers pedidos de serviço, processar e executar o 
serviço requerido e enviar repostas a quem fez o pedido
– Responsabilidades do servidor
• Registrar serviços disponíveis nos peers
• Receber pedidos de busca por serviços disponíveis, buscar por esses
serviços e enviar respostas com as localizações dos serviços
desejados
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• P2Ps híbridas
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Arquiteturas P2P
– Algumas razões
• Eliminar o gargalo de fonte única, usando o P2P para distribuir dados 
e fazer o balanceamento de pedidos na rede
• Eliminar o risco de um único ponto de falha
• A infraestrutura P2P permite acesso direto aos recursos
compartilhados, e isso dá capacidade de manutenção remota
– Elementos
• Um peer é o nodo em uma rede P2P. É a unidade fundamental de 
qualquer solução P2P.
• Cada peer possui um ID único
• Cada peer pertence a um ou mais grupos (PeerGroups) 
• Cada peer pode se comunicar com outros peers de seus grupos e 
também de outros grupos.
Prof. Edilberto Silva – www.edilms.eti.br
Tipos de Arquitetura de Software
• Arquiteturas P2P
– Elementos
• Peer Simples (Simple Peer):
– É designado a servir um único usuário final, permitindo a este prover e 
consumir serviços da rede.
• Peer Rendezvous
– Fornece as localizações na rede para a descoberta de outros peers e de 
seus recursos disponíveis.
• Peer Router
– Fornece um mecanismo para que os peers se comuniquem através de 
firewalls ou NATs
• Peer Group
– Um grupo de peers com um conjunto comum de interesses ou
objetivos.
– Peer groups podem fornecer aos seus membros serviços que não estão
diretamente acessíveis aos outros peers da rede.
Prof. Edilberto Silva – www.edilms.eti.br
Referências
• Bibliografias
– The Rational Unified Process Made Easy: A Practitioner’s Guide to the 
RUP by Per Kroll, Philipe Krutchen, Addison-Wesley.
– Applied Software Architeture, by Cristine Hoffmeister, Robert Nord, Dilip
Soni, Addison-Wesley.
• Sobre RUP e EUP
– http://www.enterpriseunifiedprocess.com/
– http://www-128.ibm.com/developerworks/rational/library
• Portais de Arquitetura de Software
– http://www.opengroup.org/
– http://www.research.ibm.com/journal/sj/381/youngs.html
– http://www.booch.com/architecture/index.jsp
– http://www.sei.cmu.edu/architecture
– http://microsoft.com/architecture
Prof. Edilberto Silva – www.edilms.eti.br
Obrigado!
Edilberto Silva
www.edilms.eti.br
Prof. Edilberto Silva – www.edilms.eti.br

Continue navegando