SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
Profa. Tarciane Andrade
Agenda
Quem é o arquiteto?
Padrões Arquiteturais - Motivação
Definição
ClassificaçãoClassificação
Descrevendo Padrões
Padrão Camadas
Quem é o Arquiteto?
3
“O Arquiteto” - The Matrix
O Arquiteto...
... é um Líder Técnico!
Possui conhecimento técnico e qualidades de um líder
Tem autonomia para tomar decisões técnicas no projeto
Diferente do Gerente de Projetos
4
Diferente do Gerente de Projetos
Gerencia o projeto em termos de alocação de recursos,
cronograma e custos
GP = Produtor garantir que as coisas sejam feitas
Arquiteto = Diretor garantir que as coisas sejam feitas da
maneira correta
O Arquiteto...
... é um Líder Técnico!
Contribui ativamente para o planejamento de atividades do
projeto
Interage bastante com os outros membros da equipe
(Analistas, Desenvolvedores, etc.)
5
(Analistas, Desenvolvedores, etc.)
É orientado a pessoas atua como mentor de outros
membros da equipe
É focado na entrega de resultados força motriz do lado
técnico do projeto
O Arquiteto...
... conhece o Processo de Desenvolvimento!
O processo assegura que os membros da equipe trabalhem
de forma coordenada
6
O processo define os papéis envolvidos, as atividades a
serem desempenhadas e os produtos de trabalho gerados
Deve conhecer os demais papéis e suas responsabilidades
O Arquiteto...
... conhece o Domínio do Negócio!
Ajuda a melhor entender e contribuir para que os
requisitos sejam devidamente capturados
Equilíbrio entre conhecimento Técnico e conhecimento do
7
Equilíbrio entre conhecimento Técnico e conhecimento do
Negócio
O domínio tem impacto na arquitetura
Caso contrário, a solução pode não atender ao problema
O Arquiteto...
... tem conhecimento Técnico!
Não é necessariamente um expert
Tende a ser generalista, em vez de especialista
8
Tende a ser generalista, em vez de especialista
Possui certo nível de conhecimento técnico
Conhece muitas tecnologias em um nível superior, em vez
de algumas tecnologias no nível de detalhe
O Arquiteto...
... tem conhecimento em Design de sistemas!
Arquitetura envolve decisões importantes de
design
9
Deve ditar os vários tipos de padrões, incluindo
padrões de código, ferramentas e plataformas que
serão utilizadas
O Arquiteto...
... tem conhecimento em Programação!
Desenvolvedores é um dos grupos mais
importantes com o qual o arquiteto interage
10
Favorece a comunicação efetiva
Abstrair conceitos em linguagens e aprendê-las na
profundidade necessária
O Arquiteto...
... é um Bom Comunicador!
Falar bem e escrever bem
Ser um bom observador e saber ouvir
11
Ser um bom observador e saber ouvir
Comunicar de forma clara e garantir o entendimento
Conquistar o respeito da equipe
Motivar a equipe
O Arquiteto...
... toma Decisões!
Toma decisões críticas sob pressão e deve fazer com que
essas decisões sejam cumpridas à risca
É importante ter experiência
12
É importante ter experiência
A inabilidade de tomar decisões vai prejudicando o projeto
O time perde confiança no arquiteto
Decisões passam a ser tomadas por cada um
O Arquiteto...
... deve estar ciente da Política Organizacional!
Não deve estar apenas preocupado com
tecnologia
13
Sabe onde o poder reside e busca utilizá-lo em
favor do projeto
O Arquiteto...
... é um Negociador!
Interage com as diversas partes interessadas do projeto
Requistos podem possuir riscos associados
14
Requistos podem possuir riscos associados
Riscos devem ser tratados
Requisitos podem ser diminuidos para eliminar riscos
O Arquiteto evita Problemas...
“Uma equipe teve que refazer parte da
implementação de JavaScripts da camada de
apresentação de um sistema ao perceber, já
em produção, que o sistema não atendia o
navegador Firefox.”navegador Firefox.”
“Em um outro projeto descobriu-se, já em
produção, que o tempo médio dos casos de
uso era de 40 segundos.”
Motivações para o estudo de
Arquitetura de Software
Sistemas cada vez maiores;
Sistemas cada vez mais complexos;
Mais requisitos em termos de confiabilidade;
Mais requisitos em termos de desempenho;Mais requisitos em termos de desempenho;
Mais requisitos em termos de economia;
Mais requisitos em termos de integração;
Necessidade de manutenibilidade – facilidade de
reparo e evolução;
Tendência à componentização;
Busca pela reusabilidade.
Definição
“A arquitetura de um software é a estrutura
do sistema, compreendendo componentes de
software, propriedades desses componentes
que são visíveis externamente e oque são visíveis externamente e o
relacionamento entre eles”. Paul Clements,
SEI.
Definição
“A Arquitetura de Software inclui o conjunto
de decisões significantes sobre a organização
de um software tais como a seleção dos
elementos estruturais e suas interfaces; oelementos estruturais e suas interfaces; o
comportamento entre esses elementos; a
composição destes elementos estruturais e de
comportamento em subsistemas maiores e o
estilo arquitetural que guia esta organização.”,
Booch, Kruchten, Reitman, Bittner, and Shaw.
Ponte entre os Requisitos e sua Implementação.
Arquitetura de Software
Abstração que ajuda a gerenciar a complexidade
Projeto Arquitetural do Software envolve:
Estrutura modular do software
Arquitetura de Software
Componentes
Relacionamento entre componentes
Formada por diferentes visões (4 + 1):
Arquitetura de Software
Visão Lógica Visão de Implementação
Visão de Casos de Uso
Visão de ImplantaçãoVisão de Processos
Visão de Casos de Uso:
Compreende as situações de uso do sistema que
descrevem o comportamento do sistema conforme é visto
pelo seus usuários finais.
Casos de uso com impacto mais significativo na
arquitetura.
Arquitetura de Software - Visão
Casos de uso com impacto mais significativo na
arquitetura.
Visão Lógica:
Abrange as classes, interfaces e colaborações que formam
o vocabulário do problema e de sua solução.
Preocupação com quantidade de camadas, plataforma a
ser utilizada, tecnologias, componentes, diagrama de
classes
Visão de Processos
Abrange os processamentos paralelos, visualizando
cooperação entre componentes e sincronização.
Questões como concorrência, distribuição, integração,
performance e escalabilidade.
Arquitetura de Software - Visão
performance e escalabilidade.
Arquitetura de Software - Visão
Visão de Implementação
Cobre os arquivos utilizados para a montagem e fornecimento do
sistema físico.
24
Visão de Implantação
Compreende os nós em que os componentes do sistema são
executados.
Questões estruturais da Arquitetura
de Software
Seleção de alternativas de projeto;
Escalabilidade (crescimento) e desempenho;
Organização e estrutura geral do software;
Protocolos de comunicação;
Atribuição de funcionalidade a componentes de
projeto.
Principais Padrões Arquiteturais
Padroes do livro:(*) Buschmann, Frank; Meunier Regine;
Rohnert, Hans; Sommerlad, Peter; Stal, Michael. Pattern-
Oriented Software Architecture: A System of Patterns.
Wiley.1998.
Estruturais – padrões nesta categoria ajudam você a evitarEstruturais – padrões nesta categoria ajudam você a evitar
um “mar” de componentes ou objetos. Em particular, eles
suportam uma decomposição controlada de uma tarefa global
do sistema em subtarefas cooperativas.
A categoria inclui os seguintes padrões:
Camadas
Pipes e Filtros
Principais Padrões Arquiteturais
Sistemas Distribuídos – esta categoria
compreende macro soluções para sistemas
baseados em distribuição.
O padrão abaixo se enquadra nessa categoria:
Broker
Principais Padrões Arquiteturais
Sistemas Interativos – os padroes desta
categoria suportam a estruturação de sistemas
de software.
O padrão abaixo se enquadra:
Model-View-Controller (MVC)
Descrevendo Padrões Arquiteturais
Nome
O nome e um curto resumo do padrão.
Exemplo
Um exemplo do mundo real demonstrando a existência do
problema e a necessidade do padrão.problema e a necessidade do padrão.
Contexto
As situações nas quais o padrão se aplica.
Problema
Descreve o problema que o padrão soluciona, incluindo
uma sobre restrições, imposições e demais questões
associadas ao problema.
Descrevendo Padrões Arquiteturais
Solução
O princípio básico da solução associado ao padrão.
Estrutura
Uma especificação detalhada dos aspectosUma especificação detalhada dos aspectos
estruturais do padrão.
Usos conhecidos
Fornece exemplos de aplicação do padrão
encontrados em sistemas reais.
Padrão
Camadas
Padrão
Camadas
Padrão de Camadas
Contexto
Um grande sistema que requer decomposição.
Problema
Imagine que esteja projetando um sistema cuja
característica principal é uma mistura de assuntos de altocaracterística principal é uma mistura de assuntos de alto
nível com assuntos de baixo nível, em que os assuntos de
alto nível usam os assuntos de baixo nível.
A parte de baixo nível está frequentemente perto do hardware
A parte de mais alto nível está frequentemente perto do usuário
O fluxo de comunicação tipicamente consiste de pedidos fluindo do
alto para o baixo nível
As respostas andam na direção contrária
Padrão de Camadas
Problema (cont.)
Portabilidade para outras plataformas é desejada.
O trabalho tem que ser subdividido em equipes
com especificidades distintas.com especificidades distintas.
Padrão de Camadas
Solução
Decompor em camadas de abstração de
forma que uma camada não depende da
superior e utiliza serviços apenas da camadasuperior e utiliza serviços apenas da camada
imediatamente inferior.
Padrão de Camadas
Solução
De um ponto de vista de alto nível, a solução é
extremamente simples.
O sistema deve ser estruturado em um número apropriado
de camadas, colocadas umas sobre as outras.de camadas, colocadas umas sobre as outras.
Inicie no nível mais baixo de abstração – chame-a de
“Camada 1”. Esta é a base de seu sistema.
Trabalhe seguindo para cima no nível de abstração
colocando a Camada J sobre a Camada J-1 até alcançar o
nível mais elevado de funcionalidade – chame-a de
“Camada N”.
Os serviços da Camada J são usados somente pela Camada
J+1.
Padrão de Camadas
Padrão de Camadas
Solução
1. Defina o critério de abstração para agrupar tarefas em
camadas
2. Determine o número de níveis de abstração (baseado no
critério acima)critério acima)
Cada nível de abstração corresponde a uma camada
Às vezes não é simples decidir se deve haver uma
quebra de uma camada em subcamadas ou não
Camadas demais podem gerar overhead
Camadas de menos podem comprometer a estrutura
Padrão de Camadas
Solução
3. Dê um nome e atribua tarefas a cada camada
Para a camada de cima, a tarefa é a tarefa global do
sistema, do ponto de vista do usuário
4. Especifique os serviços
O princípio básico é de separar as camadas uma das
outras
Nenhum módulo abrange duas camadas
Tente manter mais riqueza acima e menos abaixo
Isso ajuda a prover bons serviços de alto nível para o
programador "em cima"
Padrão de Camadas
Solução
5. Refine as Camadas
6. Especifique uma interface para cada camada
A camada J nada sabe sobre a camada J-1 e usa umaA camada J nada sabe sobre a camada J-1 e usa uma
interface para acessá-la;
O padrão Facade é bastante útil para organizar a
interface da camada;
7. Estruture as camadas individualmente
Quebre a camada em subsistemas (partições) menores
se ela for complexa;
Padrão de Camadas
Solução
8. Especifique a comunicação entre camadas
A camada J passa a informação necessária para a
camada J-1 ao chamá-la
9. Desacople camadas adjacentes
Evite situações em que a camada de baixo sabe algo
sobre seus clientes (camadas acima)
Acoplamento unidirecional é preferível
Padrão de Camadas
Solução
10. Projete uma estratégia de tratamento de erros
O esforço de programação e overhead podem ser
grandes para tratar erros numa arquitetura em camadas
Um erro pode ser tratado na camada onde foiUm erro pode ser tratado na camada onde foi
descoberto ou numa camada superior
No segundo caso, deve haver mapeamento para
tornar o erro semanticamente reconhecível pela
camada de cima;
Tente tratar erros na camada mais baixa possível
Isso simplifica todas as camadas superiores que
não sabem nem devem saber do erro.
Padrão de Camadas
Estrutura
Padrão de Camadas
Estrutura (cont.)
Padrão de Camadas
Estrutura
Padrão de Camadas
Estrutura
Padrão de Camadas
Usos Conhecidos
Sistemas de Informação em geral: Apresentação,
Lógica da Aplicação, Camada de Persistência.
Sistemas Operacionais: Serviços de Sistema,Sistemas Operacionais: Serviços de Sistema,
Camada de Gerenciamento de Recursos, Kernel,
Camada de Abstração do Hardware e o próprio
Hardware.
Aplicações em duas camadas
Cliente-Servidor
Necessidade de compartilhar a lógica de acesso a dados
entre vários usuários simultâneos
Nesta estrutura a base de dados foi colocada em uma
máquina específica, separada das máquinas que
executam as aplicações.executam as aplicações.
Aplicativos instalados em estações clientes contendo toda
a lógica da aplicação (clientes ricos ou gordos).
Um grande problema neste modelo é o gerenciamento de
versões pois para cada alteração os aplicativos precisam
ser atualizados em todas as máquinas clientes.
Aplicações em três camadas
(Modelo em três camadas)
Impulsionadas pela internet.
Movimento no sentido de separar a lógica de negócio da
interface com o usuário.
Usuários da WEB possam acessar as mesmas aplicaçõesUsuários da WEB possam acessar as mesmas aplicações
sem ter que instalar estas aplicações em suas máquinas
locais.
Como a lógica do aplicativo, inicialmente contida no
cliente rico, não reside mais na máquina do usuário, este
tipo de cliente passou a ser chamado de cliente pobre ou
magro (Thin Client).
Aplicações em três camadas
(Modelo em três camadas)
Neste modelo o aplicativo é movido para o Servidor e um
navegador Web é usado como um cliente magro.
O aplicativo é executado em servidores Web com os
quais o navegador Web se comunica e gera o códigoquais o navegador Web se comunica e gera o código
HTML para ser exibido no cliente.
Aplicações em três camadas
(Modelo em três camadas)
Camada de apresentação
Camada que interage diretamente com o usuário e onde são
feitas as requisições ao sistema.
Camada de negócioCamada de negócio
Camada que contempla as funções e regras de todo o negócio.
Não faz interface com o usuário e seus dados são voláteis.
Camada de persistência
Repositório das informações e as classes que a manipulam.
Recebe as requisições da camada de negócios e executa essas
requisições em um banco de dados.

Mais conteúdo relacionado

Mais procurados

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - IntroduçãoSergio Crespo
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareJairo Junior
 
Padrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelPadrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelEduardo Nicola F. Zagari
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareUFPA
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de SistemasGuilherme
 
Arquitetura, uma questão de "estilo"?
Arquitetura, uma questão de "estilo"?Arquitetura, uma questão de "estilo"?
Arquitetura, uma questão de "estilo"?Vanilson Buregio
 
Poo apostila visual c
Poo apostila visual cPoo apostila visual c
Poo apostila visual cFabiano Lima
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwarePeter Jandl Junior
 
Análise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e JavaAnálise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e Javaarmeniocardoso
 
Aula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosAula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosLeandro Rezende
 

Mais procurados (20)

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Cs 2
Cs 2Cs 2
Cs 2
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - Introdução
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Padrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelPadrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - Microkernel
 
ArquiteturaSoftware
ArquiteturaSoftwareArquiteturaSoftware
ArquiteturaSoftware
 
Modelagem 21102006_2
Modelagem 21102006_2Modelagem 21102006_2
Modelagem 21102006_2
 
Analise sistemas 03
Analise sistemas 03Analise sistemas 03
Analise sistemas 03
 
Arquitetura software
Arquitetura softwareArquitetura software
Arquitetura software
 
Modelagem 21102006_1
Modelagem 21102006_1Modelagem 21102006_1
Modelagem 21102006_1
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de Software
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura, uma questão de "estilo"?
Arquitetura, uma questão de "estilo"?Arquitetura, uma questão de "estilo"?
Arquitetura, uma questão de "estilo"?
 
Poo apostila visual c
Poo apostila visual cPoo apostila visual c
Poo apostila visual c
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
Análise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e JavaAnálise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e Java
 
Aula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosAula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a Objetos
 

Destaque

Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Glauco Vinicius Argentino de Oliveira
 
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOEstevão Hess
 
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluçõesTDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluçõesEric Lemes
 
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...Bruno Arueira
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelRyan Padilha
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasEduardo Nicola F. Zagari
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBRafael França
 
Arquiteturas de Computadores - slides
Arquiteturas de Computadores - slidesArquiteturas de Computadores - slides
Arquiteturas de Computadores - slidesGuilherme Ferreira
 
Material aula informática básica
Material aula informática básicaMaterial aula informática básica
Material aula informática básicaCarlos Melo
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidorMarcia Abrahim
 

Destaque (12)

Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
 
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
 
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluçõesTDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
 
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
 
Ppt informática básica sistema operacioanal
Ppt informática básica sistema operacioanalPpt informática básica sistema operacioanal
Ppt informática básica sistema operacioanal
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - Camadas
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
Arquiteturas de Computadores - slides
Arquiteturas de Computadores - slidesArquiteturas de Computadores - slides
Arquiteturas de Computadores - slides
 
software architecture
software architecturesoftware architecture
software architecture
 
Material aula informática básica
Material aula informática básicaMaterial aula informática básica
Material aula informática básica
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 

Semelhante a APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE

Aula4-modelagem e uml
Aula4-modelagem e umlAula4-modelagem e uml
Aula4-modelagem e umlneilaxavier
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
Aula Teste Fatec Engenharia de Software III
Aula Teste  Fatec Engenharia de Software IIIAula Teste  Fatec Engenharia de Software III
Aula Teste Fatec Engenharia de Software IIIDalton Martins
 
Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAna Claudia Annunciação
 
Introdução à Engenharia de Software (parte II)
Introdução à Engenharia de Software (parte II)Introdução à Engenharia de Software (parte II)
Introdução à Engenharia de Software (parte II)Nécio de Lima Veras
 
Software Architecture
Software ArchitectureSoftware Architecture
Software ArchitectureRicardo Terra
 
Conceito de analise de desenvolvivento de sistemas
Conceito de analise de desenvolvivento de sistemasConceito de analise de desenvolvivento de sistemas
Conceito de analise de desenvolvivento de sistemasluanrjesus
 
Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Camilla Gomes
 
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de softwareRESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de softwareMarcos Vinicios
 
Do Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseDo Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseRobson Silva Espig
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven DesignÍtalo Bandeira
 
Documentação de Arquitetura de Software Aplicando o C4 Model
Documentação de Arquitetura  de Software Aplicando o C4 ModelDocumentação de Arquitetura  de Software Aplicando o C4 Model
Documentação de Arquitetura de Software Aplicando o C4 ModelDouglas Alonso
 
Verificação de Conformação de Regras de Design
Verificação de Conformação de Regras de DesignVerificação de Conformação de Regras de Design
Verificação de Conformação de Regras de Designmarcioesufc
 

Semelhante a APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE (20)

Arquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes ÁgeisArquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes Ágeis
 
Trabalho individual
Trabalho individualTrabalho individual
Trabalho individual
 
Aula4-modelagem e uml
Aula4-modelagem e umlAula4-modelagem e uml
Aula4-modelagem e uml
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Aula Teste Fatec Engenharia de Software III
Aula Teste  Fatec Engenharia de Software IIIAula Teste  Fatec Engenharia de Software III
Aula Teste Fatec Engenharia de Software III
 
Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertido
 
Introdução à Engenharia de Software (parte II)
Introdução à Engenharia de Software (parte II)Introdução à Engenharia de Software (parte II)
Introdução à Engenharia de Software (parte II)
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
 
Conceito de analise de desenvolvivento de sistemas
Conceito de analise de desenvolvivento de sistemasConceito de analise de desenvolvivento de sistemas
Conceito de analise de desenvolvivento de sistemas
 
Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9
 
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de softwareRESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
RESENHA DOS CAP. 11,12, 13, e 29 do livro Engenharia de software
 
Do Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use CaseDo Diagrama de Fluxo de Dados ao Use Case
Do Diagrama de Fluxo de Dados ao Use Case
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Documentação de Arquitetura de Software Aplicando o C4 Model
Documentação de Arquitetura  de Software Aplicando o C4 ModelDocumentação de Arquitetura  de Software Aplicando o C4 Model
Documentação de Arquitetura de Software Aplicando o C4 Model
 
Verificação de Conformação de Regras de Design
Verificação de Conformação de Regras de DesignVerificação de Conformação de Regras de Design
Verificação de Conformação de Regras de Design
 
Reuso desw
Reuso deswReuso desw
Reuso desw
 
FDD
FDDFDD
FDD
 

APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE

  • 2. Agenda Quem é o arquiteto? Padrões Arquiteturais - Motivação Definição ClassificaçãoClassificação Descrevendo Padrões Padrão Camadas
  • 3. Quem é o Arquiteto? 3 “O Arquiteto” - The Matrix
  • 4. O Arquiteto... ... é um Líder Técnico! Possui conhecimento técnico e qualidades de um líder Tem autonomia para tomar decisões técnicas no projeto Diferente do Gerente de Projetos 4 Diferente do Gerente de Projetos Gerencia o projeto em termos de alocação de recursos, cronograma e custos GP = Produtor garantir que as coisas sejam feitas Arquiteto = Diretor garantir que as coisas sejam feitas da maneira correta
  • 5. O Arquiteto... ... é um Líder Técnico! Contribui ativamente para o planejamento de atividades do projeto Interage bastante com os outros membros da equipe (Analistas, Desenvolvedores, etc.) 5 (Analistas, Desenvolvedores, etc.) É orientado a pessoas atua como mentor de outros membros da equipe É focado na entrega de resultados força motriz do lado técnico do projeto
  • 6. O Arquiteto... ... conhece o Processo de Desenvolvimento! O processo assegura que os membros da equipe trabalhem de forma coordenada 6 O processo define os papéis envolvidos, as atividades a serem desempenhadas e os produtos de trabalho gerados Deve conhecer os demais papéis e suas responsabilidades
  • 7. O Arquiteto... ... conhece o Domínio do Negócio! Ajuda a melhor entender e contribuir para que os requisitos sejam devidamente capturados Equilíbrio entre conhecimento Técnico e conhecimento do 7 Equilíbrio entre conhecimento Técnico e conhecimento do Negócio O domínio tem impacto na arquitetura Caso contrário, a solução pode não atender ao problema
  • 8. O Arquiteto... ... tem conhecimento Técnico! Não é necessariamente um expert Tende a ser generalista, em vez de especialista 8 Tende a ser generalista, em vez de especialista Possui certo nível de conhecimento técnico Conhece muitas tecnologias em um nível superior, em vez de algumas tecnologias no nível de detalhe
  • 9. O Arquiteto... ... tem conhecimento em Design de sistemas! Arquitetura envolve decisões importantes de design 9 Deve ditar os vários tipos de padrões, incluindo padrões de código, ferramentas e plataformas que serão utilizadas
  • 10. O Arquiteto... ... tem conhecimento em Programação! Desenvolvedores é um dos grupos mais importantes com o qual o arquiteto interage 10 Favorece a comunicação efetiva Abstrair conceitos em linguagens e aprendê-las na profundidade necessária
  • 11. O Arquiteto... ... é um Bom Comunicador! Falar bem e escrever bem Ser um bom observador e saber ouvir 11 Ser um bom observador e saber ouvir Comunicar de forma clara e garantir o entendimento Conquistar o respeito da equipe Motivar a equipe
  • 12. O Arquiteto... ... toma Decisões! Toma decisões críticas sob pressão e deve fazer com que essas decisões sejam cumpridas à risca É importante ter experiência 12 É importante ter experiência A inabilidade de tomar decisões vai prejudicando o projeto O time perde confiança no arquiteto Decisões passam a ser tomadas por cada um
  • 13. O Arquiteto... ... deve estar ciente da Política Organizacional! Não deve estar apenas preocupado com tecnologia 13 Sabe onde o poder reside e busca utilizá-lo em favor do projeto
  • 14. O Arquiteto... ... é um Negociador! Interage com as diversas partes interessadas do projeto Requistos podem possuir riscos associados 14 Requistos podem possuir riscos associados Riscos devem ser tratados Requisitos podem ser diminuidos para eliminar riscos
  • 15. O Arquiteto evita Problemas... “Uma equipe teve que refazer parte da implementação de JavaScripts da camada de apresentação de um sistema ao perceber, já em produção, que o sistema não atendia o navegador Firefox.”navegador Firefox.” “Em um outro projeto descobriu-se, já em produção, que o tempo médio dos casos de uso era de 40 segundos.”
  • 16. Motivações para o estudo de Arquitetura de Software Sistemas cada vez maiores; Sistemas cada vez mais complexos; Mais requisitos em termos de confiabilidade; Mais requisitos em termos de desempenho;Mais requisitos em termos de desempenho; Mais requisitos em termos de economia; Mais requisitos em termos de integração; Necessidade de manutenibilidade – facilidade de reparo e evolução; Tendência à componentização; Busca pela reusabilidade.
  • 17. Definição “A arquitetura de um software é a estrutura do sistema, compreendendo componentes de software, propriedades desses componentes que são visíveis externamente e oque são visíveis externamente e o relacionamento entre eles”. Paul Clements, SEI.
  • 18. Definição “A Arquitetura de Software inclui o conjunto de decisões significantes sobre a organização de um software tais como a seleção dos elementos estruturais e suas interfaces; oelementos estruturais e suas interfaces; o comportamento entre esses elementos; a composição destes elementos estruturais e de comportamento em subsistemas maiores e o estilo arquitetural que guia esta organização.”, Booch, Kruchten, Reitman, Bittner, and Shaw.
  • 19. Ponte entre os Requisitos e sua Implementação. Arquitetura de Software
  • 20. Abstração que ajuda a gerenciar a complexidade Projeto Arquitetural do Software envolve: Estrutura modular do software Arquitetura de Software Componentes Relacionamento entre componentes
  • 21. Formada por diferentes visões (4 + 1): Arquitetura de Software Visão Lógica Visão de Implementação Visão de Casos de Uso Visão de ImplantaçãoVisão de Processos
  • 22. Visão de Casos de Uso: Compreende as situações de uso do sistema que descrevem o comportamento do sistema conforme é visto pelo seus usuários finais. Casos de uso com impacto mais significativo na arquitetura. Arquitetura de Software - Visão Casos de uso com impacto mais significativo na arquitetura. Visão Lógica: Abrange as classes, interfaces e colaborações que formam o vocabulário do problema e de sua solução. Preocupação com quantidade de camadas, plataforma a ser utilizada, tecnologias, componentes, diagrama de classes
  • 23. Visão de Processos Abrange os processamentos paralelos, visualizando cooperação entre componentes e sincronização. Questões como concorrência, distribuição, integração, performance e escalabilidade. Arquitetura de Software - Visão performance e escalabilidade.
  • 24. Arquitetura de Software - Visão Visão de Implementação Cobre os arquivos utilizados para a montagem e fornecimento do sistema físico. 24 Visão de Implantação Compreende os nós em que os componentes do sistema são executados.
  • 25. Questões estruturais da Arquitetura de Software Seleção de alternativas de projeto; Escalabilidade (crescimento) e desempenho; Organização e estrutura geral do software; Protocolos de comunicação; Atribuição de funcionalidade a componentes de projeto.
  • 26. Principais Padrões Arquiteturais Padroes do livro:(*) Buschmann, Frank; Meunier Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael. Pattern- Oriented Software Architecture: A System of Patterns. Wiley.1998. Estruturais – padrões nesta categoria ajudam você a evitarEstruturais – padrões nesta categoria ajudam você a evitar um “mar” de componentes ou objetos. Em particular, eles suportam uma decomposição controlada de uma tarefa global do sistema em subtarefas cooperativas. A categoria inclui os seguintes padrões: Camadas Pipes e Filtros
  • 27. Principais Padrões Arquiteturais Sistemas Distribuídos – esta categoria compreende macro soluções para sistemas baseados em distribuição. O padrão abaixo se enquadra nessa categoria: Broker
  • 28. Principais Padrões Arquiteturais Sistemas Interativos – os padroes desta categoria suportam a estruturação de sistemas de software. O padrão abaixo se enquadra: Model-View-Controller (MVC)
  • 29. Descrevendo Padrões Arquiteturais Nome O nome e um curto resumo do padrão. Exemplo Um exemplo do mundo real demonstrando a existência do problema e a necessidade do padrão.problema e a necessidade do padrão. Contexto As situações nas quais o padrão se aplica. Problema Descreve o problema que o padrão soluciona, incluindo uma sobre restrições, imposições e demais questões associadas ao problema.
  • 30. Descrevendo Padrões Arquiteturais Solução O princípio básico da solução associado ao padrão. Estrutura Uma especificação detalhada dos aspectosUma especificação detalhada dos aspectos estruturais do padrão. Usos conhecidos Fornece exemplos de aplicação do padrão encontrados em sistemas reais.
  • 32. Padrão de Camadas Contexto Um grande sistema que requer decomposição. Problema Imagine que esteja projetando um sistema cuja característica principal é uma mistura de assuntos de altocaracterística principal é uma mistura de assuntos de alto nível com assuntos de baixo nível, em que os assuntos de alto nível usam os assuntos de baixo nível. A parte de baixo nível está frequentemente perto do hardware A parte de mais alto nível está frequentemente perto do usuário O fluxo de comunicação tipicamente consiste de pedidos fluindo do alto para o baixo nível As respostas andam na direção contrária
  • 33. Padrão de Camadas Problema (cont.) Portabilidade para outras plataformas é desejada. O trabalho tem que ser subdividido em equipes com especificidades distintas.com especificidades distintas.
  • 34. Padrão de Camadas Solução Decompor em camadas de abstração de forma que uma camada não depende da superior e utiliza serviços apenas da camadasuperior e utiliza serviços apenas da camada imediatamente inferior.
  • 35. Padrão de Camadas Solução De um ponto de vista de alto nível, a solução é extremamente simples. O sistema deve ser estruturado em um número apropriado de camadas, colocadas umas sobre as outras.de camadas, colocadas umas sobre as outras. Inicie no nível mais baixo de abstração – chame-a de “Camada 1”. Esta é a base de seu sistema. Trabalhe seguindo para cima no nível de abstração colocando a Camada J sobre a Camada J-1 até alcançar o nível mais elevado de funcionalidade – chame-a de “Camada N”. Os serviços da Camada J são usados somente pela Camada J+1.
  • 37. Padrão de Camadas Solução 1. Defina o critério de abstração para agrupar tarefas em camadas 2. Determine o número de níveis de abstração (baseado no critério acima)critério acima) Cada nível de abstração corresponde a uma camada Às vezes não é simples decidir se deve haver uma quebra de uma camada em subcamadas ou não Camadas demais podem gerar overhead Camadas de menos podem comprometer a estrutura
  • 38. Padrão de Camadas Solução 3. Dê um nome e atribua tarefas a cada camada Para a camada de cima, a tarefa é a tarefa global do sistema, do ponto de vista do usuário 4. Especifique os serviços O princípio básico é de separar as camadas uma das outras Nenhum módulo abrange duas camadas Tente manter mais riqueza acima e menos abaixo Isso ajuda a prover bons serviços de alto nível para o programador "em cima"
  • 39. Padrão de Camadas Solução 5. Refine as Camadas 6. Especifique uma interface para cada camada A camada J nada sabe sobre a camada J-1 e usa umaA camada J nada sabe sobre a camada J-1 e usa uma interface para acessá-la; O padrão Facade é bastante útil para organizar a interface da camada; 7. Estruture as camadas individualmente Quebre a camada em subsistemas (partições) menores se ela for complexa;
  • 40. Padrão de Camadas Solução 8. Especifique a comunicação entre camadas A camada J passa a informação necessária para a camada J-1 ao chamá-la 9. Desacople camadas adjacentes Evite situações em que a camada de baixo sabe algo sobre seus clientes (camadas acima) Acoplamento unidirecional é preferível
  • 41. Padrão de Camadas Solução 10. Projete uma estratégia de tratamento de erros O esforço de programação e overhead podem ser grandes para tratar erros numa arquitetura em camadas Um erro pode ser tratado na camada onde foiUm erro pode ser tratado na camada onde foi descoberto ou numa camada superior No segundo caso, deve haver mapeamento para tornar o erro semanticamente reconhecível pela camada de cima; Tente tratar erros na camada mais baixa possível Isso simplifica todas as camadas superiores que não sabem nem devem saber do erro.
  • 46. Padrão de Camadas Usos Conhecidos Sistemas de Informação em geral: Apresentação, Lógica da Aplicação, Camada de Persistência. Sistemas Operacionais: Serviços de Sistema,Sistemas Operacionais: Serviços de Sistema, Camada de Gerenciamento de Recursos, Kernel, Camada de Abstração do Hardware e o próprio Hardware.
  • 47. Aplicações em duas camadas Cliente-Servidor Necessidade de compartilhar a lógica de acesso a dados entre vários usuários simultâneos Nesta estrutura a base de dados foi colocada em uma máquina específica, separada das máquinas que executam as aplicações.executam as aplicações. Aplicativos instalados em estações clientes contendo toda a lógica da aplicação (clientes ricos ou gordos). Um grande problema neste modelo é o gerenciamento de versões pois para cada alteração os aplicativos precisam ser atualizados em todas as máquinas clientes.
  • 48. Aplicações em três camadas (Modelo em três camadas) Impulsionadas pela internet. Movimento no sentido de separar a lógica de negócio da interface com o usuário. Usuários da WEB possam acessar as mesmas aplicaçõesUsuários da WEB possam acessar as mesmas aplicações sem ter que instalar estas aplicações em suas máquinas locais. Como a lógica do aplicativo, inicialmente contida no cliente rico, não reside mais na máquina do usuário, este tipo de cliente passou a ser chamado de cliente pobre ou magro (Thin Client).
  • 49. Aplicações em três camadas (Modelo em três camadas) Neste modelo o aplicativo é movido para o Servidor e um navegador Web é usado como um cliente magro. O aplicativo é executado em servidores Web com os quais o navegador Web se comunica e gera o códigoquais o navegador Web se comunica e gera o código HTML para ser exibido no cliente.
  • 50. Aplicações em três camadas (Modelo em três camadas) Camada de apresentação Camada que interage diretamente com o usuário e onde são feitas as requisições ao sistema. Camada de negócioCamada de negócio Camada que contempla as funções e regras de todo o negócio. Não faz interface com o usuário e seus dados são voláteis. Camada de persistência Repositório das informações e as classes que a manipulam. Recebe as requisições da camada de negócios e executa essas requisições em um banco de dados.